【问题标题】:Jquery: selecting all the elements, appearing after a certain element later on the pageJquery:选择所有元素,出现在页面后面的某个元素之后
【发布时间】:2011-07-31 08:38:59
【问题描述】:

如何选择所有元素,出现在某个元素之后,即页面后面

【问题讨论】:

    标签: jquery jquery-selectors


    【解决方案1】:

    如果您所说的元素都是彼此之间的兄弟姐妹,那么.nextAll() 就是要使用的函数。

    如果元素可以出现在页面上的任何地方(无论它们嵌套在什么级别),那么您可以利用 jQuery(从 1.4 版开始)总是返回元素的事实按文档顺序,即使你 .add() 收藏了一些东西。

    因此基本思路是先选择所有元素,不管它们是在“start”元素之前还是之后,然后将“start”元素添加到集合中。然后,您可以遍历已排序的元素,查找“开始”元素的位置。然后简单地.slice()这个位置之后的所有元素:

    var start = '#start';
    var all = 'p';
    var index;
    
    var afters = $(all).add(start).each(function (i) {
        if ($(this).is(start)) {
            index = i;
            return false; // quit looping early
        }
    }).slice(index + 1);
    

    看到它在行动here

    【讨论】:

      【解决方案2】:

      您能否提供一段代码或至少一个结构示例或您想要实现的描述?你查过hierarchy jQuery selectors吗?

      【讨论】:

        【解决方案3】:

        我不相信有一种简单的方法可以做到这一点。真正的问题是你为什么要这样做?无论如何,如果你真的需要,.nextAll()、.each() 和 .children() 的组合会有所帮助。

        var nodes = [];
        
        $('#original').nextAll().each(function() {
          nodes.push(this);
          $(this).children().each(function() {
             // some recursive function to add a deep set of children
          }
        }
        

        但是,同样,您可能应该做一些不同的事情。

        【讨论】:

          【解决方案4】:

          您如何识别您的“特定元素”?是否使用特定的ID。或者只是一个标签名称。

          您还可以为您命名为“特定元素”的每个标签添加一个 id,并使用 nextall() 显示该 id 之后的所有内容。这只是一个疯狂的猜测。

          【讨论】:

            【解决方案5】:

            参考this

            另一种方法

            $('selector').nextALL('selector')
            

            参考这个nextAll

            $('div.third-item').nextAll("div")
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2011-05-27
              • 1970-01-01
              • 2020-05-10
              • 2014-04-26
              • 2011-01-24
              • 1970-01-01
              • 2011-06-05
              相关资源
              最近更新 更多