バグについてはよくわかりませんが、これを達成するために私が見ることができる最も簡単な方法は次のとおりです。
var el = $('.close');
$('.modal').empty().append(el);
JSフィドルデモ。
少し良いアプローチ(複数の.close
要素の誤った仮定に基づく):
$('.modal').each(
function(){
var that = $(this),
el = that.find('.close');
that.empty().append(el)
});
JSフィドルデモ。
each()
jQueryとプレーンJavaScript関数の使用の組み合わせ:
function fratricide(el) {
while (el.previousSibling) {
el.parentNode.removeChild(el.previousSibling);
}
while (el.nextSibling) {
el.parentNode.removeChild(el.nextSibling);
}
}
$('.close').each(
function() {
fratricide(this);
});
JSフィドルデモ。
そして、アプローチのJSパフォーマンス比較。当然のことながら、プレーンJavaScriptを使用すると、読むのがかなり醜いと思いますが、かなりスピードアップします(実際にどれだけきれいになるかはわかりませんが)。
興味深いことに(とにかく、以前にリンクされたJS Perfを更新したので)、参照を格納する変数を使用してel.parentNode
も、無視できるほどの違いがあります。おそらく、要素/ノードへの参照を保存しているにもかかわらず、DOMはまだ必要であるためです。el.previousSibling
ノードを見つけるためにアクセスしましたか?