如果其他在 Jquery 中不起作用? [关闭]
Posted
技术标签:
【中文标题】如果其他在 Jquery 中不起作用? [关闭]【英文标题】:If else is not workin in Jquery? [closed] 【发布时间】:2011-03-07 05:32:48 【问题描述】:这是我的 Jquery 代码:
<script>
$('.smenu li').hover(function()
var lid = $(this).find('li').attr('id');
closeAll();
//show perticular div
if(lid == "d1")
$('.hbg div#info1').show();
else if(lid == "d2")
$('div#info2').show();
else if(lid == "d3")
$('div#info3').show();
);
function closeAll()
$('div#info1').hide();
$('div#info2').hide();
$('div#info3').hide();
</script>
这是我的信息div
-s:
<div class="hbg">
<div class="solu_info" id="info1">
//display information
</div>
<div class="solu_info" id="info2">
//display information
</div>
.....
</div>
<div class="smenu">
<ul>
<li id="d1"><a href="#"><img src="images/menu_hosp.jpg" border="0"></a></li>
....
鼠标悬停在 div 标签上并没有改变。为什么?
【问题讨论】:
这只是一段代码,不是问题…… 发布您的 html。可能是您的选择器不正确。 @all 这很明显,但对于你们来说,我已经更新了我的问题。 这是错误的 HTML sn-p。<li>
和 .smenu
在哪里?不,一点也不明显而且不起作用不是错误。
【参考方案1】:
if else 语句只是 javascript,与 jquery 无关。它总是有效的。如果它不是你期望它在你的代码逻辑中做的事情是错误的。
【讨论】:
【参考方案2】:也许它必须是:
var lid = $(this).attr('id');
只需 alert(lid)
并检查它是否包含值(很可能不在您的代码中)。
您当前的代码在li
元素内获取li
元素的id
。
显然,如果您的代码正确,if-else
将起作用。请记住,您更有可能做错了什么,因为该语言有错误;)
说真的,您应该先阅读一些教程和文档,然后再在这里发布很多问题。然后你就会知道find()
正在做什么以及$('.smenu li')
正在选择哪些元素。
更新:
好的,只为你:
这是你的 HTML
<div class="smenu">
<ul>
<li id="d1">...</li> // #1
<li id="d2">...</li> // #1
</ul>
选择器$('.smenu')
将选择我用#1
标记的所有<li>
元素。
当您将.find('li')
应用于此类元素时,它不会尝试在li
元素内找到li
元素,即它会选择我在此处标记为#2
的元素:
<div class="smenu">
<ul>
<li id="d1"> // #1
<ul>
<li id="foo">...</li> // #2
</ul>
<li id="d2">...</li> // #1
</ul>
但这不是你的结构。您没有嵌套列表。您想要来自 #1
元素的 ID,因此它必须是
var lid = $(this).attr('id');
【讨论】:
yaalert(lid)
正在弹出undefined
。为什么它没有得到id
attr?
@nectar:我的回答中都有描述。
我知道它(find
) 是做什么的。相同的语法适用于其他一些 jquery 代码。我也在使用find()
;
@nectar:查看我的更新答案。我希望现在很清楚。【参考方案3】:
在悬停事件处理程序中,this
将成为li
,因为它附加到$('.smenu li')
。然后$(this).find('li')
会找到li
元素inside .smenu li
,这大概是不存在的。
【讨论】:
【参考方案4】:也许switch
是您需要的。
【讨论】:
以上是关于如果其他在 Jquery 中不起作用? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
JQuery 移动工具提示弹出(“关闭”)功能在 iPhone 5 中不起作用
javascript keydown在chrome和firefox中不起作用[关闭]