5

私はこのようなhtmlを持っています:

<div id="divTestArea1">
    <b>Bold text</b>
    <i>Italic text</i>
    <div id="divTestArea2">
            <b>Bold text 2</b>
            <i>Italic text 2</i>
            <div>
                    <b>Bold text 3</b>
            </div>
    </div>

太字ではない要素をすべて削除したいと思います。私はこのコードで試しました:

$('*:not(b)').remove();

そして他のいくつかのバリエーションがありますが、それらはすべてエラーになるか、すべてを削除します。ところで、jqueryセレクターとjsoupセレクターは100%互換性がありますか?これに対する答えをjsoupでも使用したいと思います。

4

5 に答える 5

5

現在のコードは、ドキュメントとタグを含む<body>すべての を削除します。太字のテキストのみを保存したい場合は、Shih-En Chou のソリューションがうまく機能します。タグが含まれている構造も保存したい場合は、次のようにします。<div><b><div><b>

$("body *:not(div, b)")​​​​.remove();​

デモ

于 2012-08-17T05:56:29.473 に答える
3

私の解決策:

クローン<b> してメモリに保存します。->すべて削除 -><b>に挿入<body>

ここに私のコードがあります: http://jsfiddle.net/sechou/43ENq/

$(function(){
   var tmpB = $("b").clone();
   $('body').remove();
   $("body").append(tmpB);
});​
于 2012-08-17T05:51:52.150 に答える
2

私は好き.detach()です。

var $body = $("body");
var $b = $("b", $body).detach();
$(":not(b)", $body).remove();​​​​​​​​​​​
$body.append($b);

このように、要素をラップしているオブジェクトの削除の問題を克服するために、何かを移動したりクローンしたりする必要はありません<b/>

(デモ)

于 2012-08-17T06:13:25.567 に答える
2

すべての要素をそのままに移動し#divTestArea2div同様に削除されます#divTestArea1。次に、そうでないものをすべて除外し<b>て削除します。

$("#divTestArea1").append($("*", "#divTestArea2")).find('*').filter(function() {
    return this.tagName !== 'B';
}).remove();

フィドル

上記は、次のような要素以外のすべて#divTestArea1を削除するために、要素をそのまま保持します。<b>

$('body')​.append($('b'))​.find('*')​.not('b')​.remove();​

フィドル

于 2012-08-17T06:05:14.660 に答える
1

これを試して:

// Find all the <b> tags and unwrap them so they all become siblings and finally 
// remove non <b> siblings
$('body').find('b').unwrap().siblings('*:not(b)').remove();

デモ: http://jsfiddle.net/3f2Hu/

于 2012-08-17T06:07:11.917 に答える