这是我的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>
....
onmouse over div标签没有改变。为什么?
答案 0 :(得分:8)
if else语句只是javascript,与jquery无关。它总是有效的。如果它不符合您的预期,那么您的代码逻辑就会出错。
答案 1 :(得分:5)
也许必须是:
var lid = $(this).attr('id');
只需alert(lid)
并检查它是否包含值(很可能不在您的代码中)。
您当前的代码获取id
元素中li
元素的li
。
显然,如果您的代码是正确的,if-else
将会起作用。请记住,由于语言出错,您更有可能做错了;)
说真的,在发布很多问题之前,你应该阅读一些教程和文档。然后,您就会知道find()
正在做什么以及$('.smenu li')
正在选择哪些元素。
<强>更新强>
好的,只为你:
这是您的HTML
<div class="smenu">
<ul>
<li id="d1">...</li> // #1
<li id="d2">...</li> // #1
</ul>
选择器$('.smenu')
将选择我用<li>
标记的所有#1
元素。
当您将.find('li')
应用于此类元素时,它会尝试在li
元素中找到li
元素,即它会选择我用{{1}标记的元素这里:
#2
但这不是你的结构。您没有嵌套列表。您需要来自<div class="smenu">
<ul>
<li id="d1"> // #1
<ul>
<li id="foo">...</li> // #2
</ul>
<li id="d2">...</li> // #1
</ul>
元素的ID,因此它必须是
#1
答案 2 :(得分:2)
在悬停事件处理程序中,this
将成为li
,因为它附加到$('.smenu li')
。然后$(this).find('li')
会在 li
内找到.smenu li
个元素,这些元素可能不存在。
答案 3 :(得分:0)
在这里你可能需要switch
。