使用jquery从元素列表中获取id

时间:2012-11-11 16:43:49

标签: javascript jquery html

我有下一个HTML代码,我想从HTML列表中获取id属性(id =“seconde”)和jquery。

     <div id="navigation">
<ul    class=" sf-menu sf-vertical " >
            <li >

                <a href="#">Pollo</a>
                <ul>
                    <li>
                        <a href="#">Prime lavorazioni</a>

                    </li>
                    <li id = "seconde">
                        <a href="#">Seconde lavorazioni</a>

                    </li>
                    <li>
                        <a href="#">Terze lavorazioni</a>

                    </li>

                </ul>
            </li>



        </ul>
        </div>

这是我的.js:

    $("ul.sf-menu li ").click(function(){

          var oID = $(this).attr("id");
          alert(oID);
        });

但不起作用。任何的想法?感谢

4 个答案:

答案 0 :(得分:0)

您应该只将事件处理程序附加到内部li标记(并确保定义了oID变量,因为某些li标记没有'id'属性):

$("ul.sf-menu ul li ").click(function()
{
  var oID = $(this).attr("id");
  if ( oID )
    alert(oID);
});

答案 1 :(得分:0)

问题是,您的列表是嵌套的。你有一个ul.sf-menu&gt;的DOM树。 li> ul&gt;利

因此,当您单击列表项时,您的回调实际上会触发两次,因为已单击了两个列表项。

您可以考虑将代码更改为此,因此只匹配列表项是ul的子项:

$("ul.sf-menu ul > li ").click(function(){

      var oID = $(this).attr("id");
      alert(oID);
});

或者,您可以从li项中删除id,然后将它们添加到链接本身。

答案 2 :(得分:0)

$("ul.sf-menu ul li ").click(function(){
    var oID = $(this).attr("id");

    if(typeof oID != 'undefined'){
        alert(oID);
    }
});​

找到目标(DOM树)LI,我只是验证未定义

http://jsfiddle.net/sameerast/8YwVj/

答案 3 :(得分:0)

当您单击列表项时,您的回调实际上会触发两次,因为已单击了两个列表项。你只在第二个LI项目中给出了id。请在每个LI元素中输入ID,然后尝试下面的代码。

你有一个ul.sf-menu&gt;的DOM树li> ul&gt;李。

您可以使用

$(“ul.sf-menu ul&gt; li”)。click(function(){

  var oID = $(this).attr("id");
  alert(oID);

});