2

2 つの順序付けられているが、必ずしも連続しているとは限らない兄弟要素がある場合、それらを html でラップするにはどうすればよいですか?

$(element_a).before( "<span class='wow'>" );
$(element_b).after( "</span>" );

上記は私のために開始タグを閉じ、後者を挿入しないため、機能しません。

(兄弟は型とクラスの雑多な乗組員であるため、このタスクを支援するためにスライスを使用することは困難ですが、おそらく私はそれについて考えていませんでした.)

4

2 に答える 2

1

私があなたを正しく理解していれば、element_aelement_b(包括的) の間のすべての要素の周りに単一のスパンを置きたいと考えています。

これらの要素をすべて 1 つの jQuery オブジェクトにまとめる方法を理解すれば、.wrapAll()メソッドはこれを非常にうまく行うことができますが、次のような方法でうまくいくはずです。

var $els = $(element_a);
$els = $els.add( els.nextUntil(element_b) ).add(element_b)

$els.wrapAll("<span class='wow' />");

これは、 だけを含む jQuery オブジェクトから始まり、メソッドメソッドelement_aを使用してとの間のすべての要素を追加し、最後に を追加します。.add().nextUntil()element_aelement_belement_b

于 2012-05-23T04:07:05.373 に答える
1
$("<span class='wow'></span").appendTo('#container');
$(element_a, element_b).each(function() {
   $(this).clone(true).appendTo(".wow");
   $(this).remove()
})

http://jsfiddle.net/KZtE9/1/

于 2012-05-23T03:55:12.803 に答える