17

単一の要素から属性を削除する方法を知っています。それに関する投稿がすでにいくつかあります。

$("div.preview").removeAttr("style");

これはhtmlコードです:

<div class="preview" style="background-color:white">
   <p>Some text<span style="font-size:15px;">some text</span></p>
   some more code
</div>

問題は、これによりスタイル属性がプレビュー div からのみ削除されることです。そのdiv内のすべての要素から削除したい。これは単なる例であり、実際のシナリオでは、より広範な html が存在します。

それを行う短い方法はありますか?

更新: すばらしい、私は今それを行う方法を知っています. しかし、html が変数に格納された文字列として機能するように送信された場合はどうなるでしょうか。だから代わりに

$("div.preview") 

私は持っている

var string = '<div class="preview"><p style='font-size:15px;'>....</p><div>'

以下のようなことを言う方法はありますか?

$(string).find(*).removeAttr("style");
4

7 に答える 7

40

ワイルドカード セレクター*を使用して、下のすべてを選択できますdiv.preview

jsフィドル

$('div.preview *').removeAttr('style');

アップデート

RE: DOM 要素の代わりに文字列があれば、関連する質問です。それらを jQuery オブジェクトに変換し、上記のように属性を削除してから、(必要に応じて) 元に戻すことができます。

jsフィドル

// jQuery extension to get an element's outer HTML
// http://stackoverflow.com/a/2419877/1156119
jQuery.fn.outerHTML = function(s) {
    return s
        ? this.before(s).remove()
        : jQuery("<p>").append(this.eq(0).clone()).html();
};

var string = '<div class="preview"><p style="font-size:15px;">....</p><div>'
var elements = $(string);
elements.find('*').removeAttr('style');

var withoutStyles = elements.outerHTML();
alert(withoutStyles);
于 2013-03-29T14:32:47.373 に答える
5

試す:$("div.preview").children().removeAttr("style");

または:$("div.preview").find("*").removeAttr("style");孫も取得します。

于 2013-03-29T14:32:57.900 に答える
0

$("div.preview,div.preview *")).removeAttr("style")

于 2013-03-29T14:33:01.153 に答える
0
$("div.preview, div.preview *").removeAttr("style");
于 2013-03-29T14:33:16.553 に答える
0

div を選択し、その子を選択してから、div をコレクションに追加し、クラスを削除します。

$('div.preview').find('[style]').addBack().removeAttr('style')
// replace addBack with andSelf for older jQuery
// if you don't want to remove it from the preview div, just leave addBack off.

ただし、長期的には結果を修正するよりも、エディターを修正する方がおそらく良いでしょう。

于 2013-03-29T14:35:10.070 に答える
0

あなたはこれを試すことができます

$("div.preview").find('*').removeAttr("style");

のすべての子要素からスタイルを削除するにはdiv.preview

于 2013-03-29T14:35:38.597 に答える
-1

これをやってみてください

$("#frameDemo").contents().find("#div_id").parent('div').removeAttr('onclick');
$("#frameDemo").contents().find("#div_id").children('div').removeAttr('onclick');
于 2013-05-28T05:19:54.480 に答える