【问题标题】:Jquery wrappAll nextUntiljQuery wrappAll nextUntil
【发布时间】:2013-03-12 20:30:39
【问题描述】:

如何将gfield_html下的所有li包装在一个div中。

目前我们正在使用这个:

$('.gfield_html').each(function(i, e) {
    $(e).nextUntil('.gfield_html').wrapAll('<div class="box"></div>');
});

但第二个 gsection 被包裹在 div 中,它是一个标题,所以我们不希望它被包裹。

这是结构

<li class="gsection">test</li>
<li class="gfield_html">test</li>
<li>test</li>
<li>test</li>

<li class="gsection">test2</li>
<li class="gfield_html">test2</li>
<li>test2</li>
<li>test2</li>

【问题讨论】:

  • 所以你只想包装第一个?
  • 我们要将gfield_html下的所有li都包裹在独立的div中
  • gfield_html下面没有li标签?
  • 在带有gfield_html类的li下我们还有其他的li
  • 上面的 jquery 代码正在运行,但他用 div 中的 gsection 类包装了 li。我们不希望那个 li 被包裹

标签: jquery wrapall


【解决方案1】:

如果您只想包装 gfield_htmlgsection 之间的元素,那么您可以这样做

$('li.gfield_html').each(function(){
    var $set = $();
    var nxt = this.nextSibling;
    while(nxt) {
        if(!$(nxt).is('li.gsection')) {
            $set.push(nxt);
            nxt = nxt.nextSibling;
        } else break;
    } 
   console.log($set.wrapAll('<div class="wrapper" />'));
});

DEMO

PASTEBIN

【讨论】:

  • 似乎没有包裹第二块
  • @PatriceB..如果您生成了 OutPut HTML 的源代码,您应该会看到根据需要包装的所有元素。查看我更新的答案。您不需要这种方式吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-06-23
  • 1970-01-01
  • 2014-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-10
相关资源
最近更新 更多