jQuery从ALL元素中删除样式属性

use*_*762 15 html jquery

我知道如何从单个元素中删除属性,已经有一些帖子:

$("div.preview").removeAttr("style");
Run Code Online (Sandbox Code Playgroud)

这是HTML代码:

<div class="preview" style="background-color:white">
   <p>Some text<span style="font-size:15px;">some text</span></p>
   some more code
</div>
Run Code Online (Sandbox Code Playgroud)

问题是,这将仅从预览div中删除样式属性.我想从div中的所有元素中删除.这只是一个例子,在实际场景中会有更广泛的html.

有没有简短的方法呢?

更新:太好了,我现在知道怎么做了.但是如果将html作为存储在变量中的字符串发送到函数会怎样.而不是

$("div.preview") 
Run Code Online (Sandbox Code Playgroud)

我有

var string = '<div class="preview"><p style='font-size:15px;'>....</p><div>'
Run Code Online (Sandbox Code Playgroud)

有没有办法说下面这样的东西?

$(string).find(*).removeAttr("style");
Run Code Online (Sandbox Code Playgroud)

Dan*_*mms 33

您可以使用通配符选择器*选择下面的所有内容div.preview.

的jsfiddle

$('div.preview *').removeAttr('style');
Run Code Online (Sandbox Code Playgroud)

更新

RE:你的相关问题,如果我们有一个字符串而不是DOM元素.我们可以将它们转换为jQuery对象,删除上面的属性,然后将它们转换回来(如果需要).

的jsfiddle

// 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);
Run Code Online (Sandbox Code Playgroud)


Jak*_*itz 5

尝试: $("div.preview").children().removeAttr("style");

或者:$("div.preview").find("*").removeAttr("style");也是孙子孙女.