【问题标题】:only get next instance in the entire document仅获取整个文档中的下一个实例
【发布时间】:2013-07-26 00:05:16
【问题描述】:

我只想在单击元素之后仅定位文档中元素的第一个实例。这是我想出的:

$('.class').click(function(){
    var x = $(this).nextAll('.anotherclass').first();
    //do something
});

但这只能从.class的兄弟姐妹中抓取,这意味着如果没有.anotherclass作为兄弟姐妹的实例,它将不会继续遍历文档。

我希望它简单地抓取.anotherclass 实例,如果我从点击的.class 开始逐行遍历html,我会很好

我该怎么做?

【问题讨论】:

    标签: javascript jquery html next


    【解决方案1】:

    试试这个:http://jsfiddle.net/rmwNS/

    var x = $('.class, .anotherClass');
    var y = x.slice( x.index( $(this) ), x.length).filter('.anotherClass').first();
    

    文档中节点的顺序保留在 x 中,因此在单击的节点之前切掉所有内容可以为您找到第一次出现 .anotherClass 的起点

    【讨论】:

    • 这是一个很好的解决方案,值得更多的支持。我自己也在搞这个,我从这个答案中学到了一些我不知道的关于 jQuery 的东西。好东西!
    【解决方案2】:

    全选,然后过滤到只有当前索引+1的那个。

    $(".anotherclass").eq( $(this).index(".anotherclass") + 1)
    

    【讨论】:

    • 这会在 DOM 中继续下去还是只有在他想要的是下一个元素时才有效?
    • 我不太清楚他继续沿着 dom 是什么意思。在这种情况下,除了根据单击的内容获取 dom 中的下一个之外,这不太有意义。
    • 他的意思是他想要下一个类为.anotherclass的元素,即使它一直在文档的末尾,在他点击的元素之后的任何地方
    【解决方案3】:

    听起来你应该分多个步骤来做

    $('.class').click(function(){
      var x.length = 0; 
      x = $(this).siblings('.anotherclass').first(); //check siblings
      if (x.length < 1)
          //check here in another portion of code
    });
    

    我从未听说过在 jquery 中中断选择过程。所以我会尝试类似上面的方法

    【讨论】:

      猜你喜欢
      • 2021-08-17
      • 2021-08-30
      • 1970-01-01
      • 1970-01-01
      • 2018-05-28
      • 1970-01-01
      • 2022-01-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多