我有下一个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);
});
但不起作用。任何的想法?感谢
答案 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,我只是验证未定义
答案 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);
});