如果else在Jquery中不起作用?
这里是我的Jquery代码:如果else在Jquery中不起作用?,jquery,if-statement,Jquery,If Statement,这里是我的Jquery代码: <script> $('.smenu li').hover(function() { var lid = $(this).find('li').attr('id'); closeAll(); //show perticular div if(lid == "d1")
<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>
onmouse-over-div标记未更改。为什么?如果else语句只是javascript,那么与jquery无关。它总是有效的。如果它不符合您的期望,则代码逻辑中的某些操作是错误的。可能是:
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>
但这不是你的结构。您没有嵌套列表。您需要#1
元素的ID,因此必须
var lid = $(this).attr('id');
可能这里需要的是
开关。在悬停事件处理程序中,这将是一个li
,因为它附加到$('.smenu li')
。然后$(this).find('li')
将在.smenu li
中找到li
元素,这些元素可能不存在。这只是一段代码,不是问题……发布您的HTML。可能是您的选择器不正确。@所有这一切都很明显,但对于你们,我已经更新了我的问题。这是错误的HTML代码段。
和.smenu
在哪里?不,它一点也不明显,不起作用也不是一个错误。ya警报(lid)
正在弹出未定义
。为什么它得不到id
attr?@nectar:我的答案中已经描述过了。我知道它(find
)做什么。同样的语法也适用于其他一些jquery代码。我也在使用find()
@蜜糖:看我更新的答案。我希望现在一切都清楚了。
<div class="smenu">
<ul>
<li id="d1"> // #1
<ul>
<li id="foo">...</li> // #2
</ul>
<li id="d2">...</li> // #1
</ul>
var lid = $(this).attr('id');