2

我需要能够在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

4 回答 4

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

工作示例

于 2013-05-15T15:40:26.590 回答
3

好吧,看来eq选择器足以满足您的目的。

$("li:eq(5)").click(function(){
  var text = $(this).text();
})
于 2013-05-15T15:41:08.953 回答
1

您最好的解决方案是为该项目提供一个 id 或至少一个类,然后您可以执行以下操作:

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

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

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

但这是一种非常尴尬的方式,并且可能会在您向列表中添加更多项目的那一刻打破。(这是一个小提琴- 它只会在您的列表项 5被点击时发出警报)

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

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

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

于 2013-05-15T15:53:11.657 回答
0
$('ul').on('click', 'li', function() {
  console.log($(this).text());
});
于 2013-05-15T15:41:40.397 回答