日期:2014-05-16  浏览次数:20383 次

关于jquery得到列表id的问题
html
HTML code

<ul>
<li id="rootli">
  列表1
  <ul>
     <li>这里没有id</li>
     <li>动态生成的li,如何在mouseover时判断这个li有没有id?</li>
  </ul>
</li> 
</ul>



JScript code

$("li").mouseover(function () {
        nowID = $(this).attr("id");
        if (nowID != "" && nowID != null) {
            alert($(this).attr("id"));
        }
    })


用jquery得到当前li的id,若没有id,则不弹出窗口了。但现在问题是,没有id的li在有id的li的嵌套中,这样每次访问子列表也就代表访问了父列,一样会弹出窗口。
问题是:我要的效果鼠标当前指向的li若没id,就不要弹窗,不管父列有没有id,如何做到

------解决方案--------------------
你这是事件冒泡导致的。你可以这样
<script src="jquery.js"></script>
<ul>
<li id="rootli">
列表1
<ul>
<li>这里没有id</li>
<li id="xx">动态生成的li,如何在mouseover时判断这个li有没有id?</li>
</ul>
</li> 
</ul>
<script>

$("li").mouseover(function (event) {
if(event.target==this)
{
nowID = $(this).attr("id");
if (nowID != "" && nowID != null) {
alert($(this).attr("id"));
}
}
})
</script>
------解决方案--------------------
阻止子li的mouseover 向上冒泡就行了
JScript code

    $("li").mouseover(function(e) {
        nowID = $(this).attr("id"); if (nowID != "" && nowID != null) { alert($(this).attr("id")); }
       e.stopPropagation(); 
     })

------解决方案--------------------
阻止冒泡就行了。