【问题标题】:Find elements between selectors在选择器之间查找元素
【发布时间】:2009-09-21 16:25:33
【问题描述】:

下面是我的 HTML 内容

<HR><HR><H3>Document_1</H3>
    <PRE>PART2_1</PRE>
    <PRE>PART2_2</PRE>
<HR><HR><H3>Document_2</H3>
    <PRE>PART3_1</PRE>
    <PRE>PART3_2</PRE>
    <PRE>PART3_3</PRE>

我想将&lt;HR&gt;&lt;HR&gt;&lt;H3&gt;......&lt;PRE&gt;&lt;/PRE&gt; 之间的所有元素包装到不同的 DIV 中。换句话说,我将拥有 2 个&lt;DIV&gt;。我尝试了各种选择器,但无法获得正确的 jquery。

【问题讨论】:

  • 此处给出的示例所需的输出会有所帮助。

标签: jquery css-selectors


【解决方案1】:
var h3 = $('hr+hr+h3'), prev = $(h3).prevAll('hr'), div = $('<div>'), next = $(h3).nextAll('pre')
if ( prev.length && h3.length == 1 && next.length ) {
    $(h3).after(div).appendTo(div)
    $(prev).prependTo(div)
    $(next).appendTo(div)
}

如果我理解错了,你可以用它作为例子。

【讨论】:

  • 很抱歉造成混乱!我希望我的输出是


    Document_1

    PART2_1
    PART2_2

    Document_2

    PART3_1
    PART3_2
    PART3_3
  • 我的适用于一组,如果有多组完全一样的话,你可能需要使用 .each 。看看你能不能解决它:)
  • @meder - 在此处添加 .each 并不像您想象的那么简单 - nextAll 将选择所有 &lt;pre&gt; 标签,即使在其他 h3s 之后也是如此。如果您从最后一个到第一个 - 通过将兄弟姐妹移动到 div 中,这可能会起作用。无论哪种方式,这对于 jQuery 来说都很复杂...
  • 嗯,是的,我猜你需要一些其他功能来处理整个兄弟业务。这让我想到了下一个问题——为什么标记是这样的?该标记的所有可能组合是什么?
猜你喜欢
相关资源
最近更新 更多
热门标签