我知道如何从单个元素中删除属性,已经有一些关于它的帖子:
$("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");
答案 0 :(得分:31)
您可以使用通配符选择器*
选择div.preview
下面的所有内容。
$('div.preview *').removeAttr('style');
RE:你的相关问题,如果我们有一个字符串而不是DOM元素。我们可以将它们转换为jQuery对象,删除上面的属性,然后将它们转换回来(如果需要)。
// 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);
答案 1 :(得分:5)
尝试:$("div.preview").children().removeAttr("style");
或:$("div.preview").find("*").removeAttr("style");
也可以让孙子孙女。
答案 2 :(得分:0)
$("div.preview,div.preview *")).removeAttr("style")
答案 3 :(得分:0)
$("div.preview, div.preview *").removeAttr("style");
答案 4 :(得分: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.
然而,修复编辑器可能更好,而不是长期修复结果。
答案 5 :(得分:0)
你可以试试这个
$("div.preview").find('*').removeAttr("style");
从div.preview
答案 6 :(得分:-1)
尝试这样做
$("#frameDemo").contents().find("#div_id").parent('div').removeAttr('onclick');
$("#frameDemo").contents().find("#div_id").children('div').removeAttr('onclick');