在如下代码段了,我希望快速找到 div的id 值 ( div4section1 
<div id = "div4section1">
<ul>
<li>li1</li>
<li>li2</li>
<li>li3</li>
</ul>
</div> 我用到是以下的代码找到 div4section1  
<script src = "..\..\..\jquery.js"></script> 
<script> 
    $document.ready(function(){        $("li").click(function(){
            alert(this.parentNode.id) ; //   "div4section1"
        })    }) 
</script> 
现在问题来了,在实际上的过程,不可能 div 节点 下来就是 ul , 有可能隔了好几层 div 才到 ul
我不可能去数有几层,然后用 this.parentNode.parentNode.parentNode.id 来找出来。
请问我应该如何解决这个问题?
当然,我也可以特意设计 <li value4DivID = "div4section1">li1</li> ,然后用 alert(this.value4DivID)调出来。
但是这不是违背了,html代码 与 js代码 分离的原则吗?

解决方案 »

  1.   

    在实际上的过程,不可能 div 节点 下来就是 ul , 有可能隔了好几层 div 才到 ul
    我不可能去数有几层那楼主想想,如果连第几层都不知道。怎么知道指定的父节点是哪个呢?
      

  2.   

    其实
    <li value4DivID = "div4section1">li1</li>
    可以说是比较理想的解决方法
      

  3.   

    parents() 这个方法 也肯定用到了递归 。
      

  4.   

      看起来不像是违背了,html代码 与 js代码 分离的原则,$(this).parents("div").attr("id")
      

  5.   

    熟悉一下这个就行了
    $('??').parents("??").parents("??").......parents("??").Children("??").attr("id")
      

  6.   

    用以下的代码判断就行了 
    if ( $(this).parents("#div4section1").length > 0 ) 
    {
        //...
    }
    else if ( $(this).parents("#div4section2").length > 0 ) 
    {
        //...
    }