jquery在分层菜单中选择li元素

时间:2013-05-15 15:39:01

标签: 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>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>

在这种情况下,我需要通过索引获取“列表项5 ”。

编辑:

基本上,当点击<li>list item 5</li>时,我希望获得此部分文本或值,当点击其他内容时 - 什么也不做。请注意,虽然菜单是分层的,但第5个元素表示第5个元素。仔细检查li项目的文本以便理解。

4 个答案:

答案 0 :(得分:8)

$('li').on('click',function(){
    alert($(this).text());
});

<强> Working Example

答案 1 :(得分:3)

好吧,eq选择器似乎足以达到您的目的。

$("li:eq(5)").click(function(){
  var text = $(this).text();
})

答案 2 :(得分:1)

你最好的解决方案是给那个项目一个id,或者至少给一个类,然后你可以做:

$("#myID").click(function() {
    var text=$(this).text();
});

如果你不能这样做,那么你可以尝试使用各种导航选择器,可能像(未经测试):

$("div>ul>li:nth-child(3)>ul>li:nth-child(3)").click(...

但这是一个非常尴尬的方法,可能会破坏您向列表中添加更多项目的第二个方法。 (这里是fiddle - 只有在点击列表项5 时才会发出提醒

或者如果文本是静态的,您可以选择:

$("li:contains('list item 5')").click(...

如果该文本发生更改,或者其他节点包含相同的文本,则会再次中断。

答案 3 :(得分:0)

$('ul').on('click', 'li', function() {
  console.log($(this).text());
});