【问题标题】:Get the position of the clicked list item获取点击列表项的位置
【发布时间】:2013-06-11 11:18:20
【问题描述】:

假设我们有这个标记:

<header>
   <nav>
      <ul>
         <li><a href="">first (not)</a></li>
         <li><a href="">second</a></li>
         <li><a href="">third</a></li>
        <!-- ... more here -->
      </ul>
   </nav>
</header>

我发现了.index()函数

我正在尝试这样:

$('body').on('click','header :not(li:first-child a) a',function(e){
     e.preventDefault();
     alert($(this).parents('ul').find('li').index(this));
});

但它总是会提醒:-1

我错过了什么?

【问题讨论】:

  • 应该只是:alert($(this).parents('ul li').index());在您的代码中

标签: javascript jquery events indexing


【解决方案1】:

尝试只获得父母:

alert( $( this ).parent().index() );

【讨论】:

    【解决方案2】:

    我建议:

    $('body').on('click','header li + li a',function(e){
         e.preventDefault();
         console.log($(this).closest('li').index());
    });
    

    JS Fiddle demo

    我认为问题在于index 方法中的this;因为index 根据提供给方法的选择器返回当前匹配元素的索引,并且有一个:只有 one 当前/this 节点,b:当前节点是 not 在您尝试查找其索引的元素的兄弟姐妹中。因此返回 -1(在 JavaScript 中,如果在给定数组中找不到元素,则返回传统结果)。

    另外,我改变了你的选择器;我假设您想找到不是 first lili 的索引?但我可能误解了选择器或您的意图。

    参考资料:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-30
      • 1970-01-01
      • 2015-04-02
      相关资源
      最近更新 更多