Javascript jquery在分层菜单中选择li元素
我需要能够从特定的Javascript jquery在分层菜单中选择li元素,javascript,jquery,Javascript,Jquery,我需要能够从特定的li中获取文本,单击时,代码如下: <div> <ul> <li>list item 1</li> <li>list item 2</li> <li> <ul> <li>list item 3</li> <li>list item 4</li> <li&
li
中获取文本,单击时,代码如下:
<div>
<ul>
<li>list item 1</li>
<li>list item 2</li>
<li>
<ul>
<li>list item 3</li>
<li>list item 4</li>
<li>list item 5</li>
</ul>
</li>
<li>list item 6</li>
<li>
<ul>
<li>list item 7</li>
<li>list item 8</li>
<li>list item 9t</li>
</ul>
</li>
</ul>
</div>
- 清单项目1
- 清单项目2
-
- 清单项目3
- 清单项目4
- 清单项目5
- 清单项目6
-
- 清单项目7
- 清单项目8
- 清单项目9t
在本例中,我需要通过索引获取“列表项5”
编辑:
基本上,当单击列表项5时,我想得到这个特殊的文本或值,当单击其他内容时,什么也不做。请注意,尽管菜单是分层的,但第5个元素表示平坦的第5个元素。仔细检查li
项目的文本,以便理解
$('li').on('click',function(){
alert($(this).text());
});
好吧,
eq
选择器对于您的目的来说已经足够了
$("li:eq(5)").click(function(){
var text = $(this).text();
})
您最好的解决方案是为该项提供一个id或至少一个类,然后您可以执行以下操作:
$("#myID").click(function() {
var text=$(this).text();
});
如果无法执行此操作,则可以尝试使用各种导航选择器,例如(未测试):
但这是一种非常尴尬的方式,可能会在您向列表中添加更多项目时中断。(这里有一个-只有在单击列表项5时才会发出警报)
或者,如果文本是静态的,您可以通过以下方式进行选择:
$("li:contains('list item 5')").click(...
如果该文本发生变化,或者如果有其他节点包含相同的文本,该节点将再次中断。您不能给它指定特定的类或id吗?欢迎Marcel-Stackoverflow尝试收集并回答常见问题。没有添加任何类或id…基于.eq()或索引的内容?@Marcel:您的意思是,尽管列表具有层次结构,为此,您希望将其视为平面吗?我想用一行代码就很难了。嗯……是的,但这适用于每三个元素,所以如果你有9个主要的ul,它们将应用于第三、第六、第九个元素,这是我不想要的。文本应该是动态的:(@Marcel:不会。它只适用于第三个元素-你想的是
:n个孩子(3n)
。但是使用直系后代选择器(
)可能会更好。太棒了,谢谢。这对旧的IE版本合适吗?我知道他们有时不喜欢(>) selectors@Marcel:IE应该没问题。如果浏览器不支持某些功能,JQuery将进行必要的更改。这不仅不能满足OP的要求(尽管问题还很不清楚),它让点击冒泡,这样当你点击嵌套的li
@MattBurland I更新了jsfiddle以停止冒泡时,你会收到多个警报。OP编辑了问题,所以现在这个答案对于OP想要的不再准确(此时,因为OP可能会再次编辑他的问题&再次&再次…)
$("div>ul>li:nth-child(3)>ul>li:nth-child(3)").click(...
$("li:contains('list item 5')").click(...