-2
<h2 id="match" class="contentHeadline">Match only in here</h2>

<p>I don't if or how many dl+table live here.</p>

<dl><dt>Text</dt></dl>
<table class="groupTable"><td>1</td><td>Abc</td></table>

<dl><dt>Text</dt></dl>
<table class="groupTable"><td>2</td><td>Def</td></table>

<dl><dt>Text</dt></dl>
<table class="groupTable"><td>3</td><td>Ghi</td></table>

<p class="foo">Maybe some text lives here. I should not float.</p>

dl + テーブルの各ペアを div.box (フローティング) でラップしたいのですが、h2#match のすぐ下にあるのは、他のもの (.foo またはヘッドライン) が続くまでです。

$("dl").each(function(){
    $(this).next('.groupTable').andSelf()
        .wrapAll('<div class="box"></div>');
});

/* Clear */
$('<div class="clear"></div>').after('.box:last');

nextUntil()dl とテーブルを個別にラップします。

Atm テスト グループが間違ってラップされています。

テスト: http://jsfiddle.net/GQwB5/

望ましい結果: http://jsfiddle.net/kppQ9/

4

1 に答える 1

2

$('#match').nextUntil('.contentHeadline')うまくいきます。

適用:

$('#match').nextUntil('.contentHeadline').filter('dl').each(function(){
    $(this).next('.groupTable').andSelf().wrapAll('<div class="box" />');
});
$('#match').nextUntil('.contentHeadline').filter('.box:last').after('<div class="clear" />');

フィドル: http://jsfiddle.net/GQwB5/1/

1.nextUntil(".foo, .contentHeadline")つの一致する要素が必要であり、少なくとも 2 つが返されるため、これはうまくいかないと思います。

于 2014-07-13T15:58:43.517 に答える