JQuery Удалить атрибуты стиля из ВСЕХ элементов
Я знаю, как удалить атрибут из одного элемента, есть уже некоторые сообщения об этом:
$("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.
Есть ли короткий способ сделать это?
UPDATE:
Отлично, теперь я знаю, как это сделать. Но что, если html отправляется для работы в качестве строки, хранящейся в переменной. Поэтому вместо
$("div.preview")
У меня
var string = '<div class="preview"><p style='font-size:15px;'>....</p><div>'
Есть ли способ сказать что-то вроде этого ниже?
$(string).find(*).removeAttr("style");
Ответы
Ответ 1
Вы можете использовать селектор подстановок *
, чтобы выбрать все под div.preview
.
jsFiddle
$('div.preview *').removeAttr('style');
Update
RE: ваш связанный вопрос, если у нас была строка, а не элементы DOM. Мы могли бы преобразовать их в объекты jQuery, удалить атрибут, как указано выше, а затем преобразовать обратно (при желании).
jsFiddle
// jQuery extension to get an element 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);
Ответ 2
попробуйте: $("div.preview").children().removeAttr("style");
или: $("div.preview").find("*").removeAttr("style");
, чтобы получить внуков тоже.
Ответ 3
$("div.preview,div.preview *")).removeAttr("style")
Ответ 4
$("div.preview, div.preview *").removeAttr("style");
Ответ 5
Выберите 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.
однако, скорее всего, лучше исправить редактор, чем исправить результаты в конечном итоге.
Ответ 6
Вы можете попробовать это
$("div.preview").find('*').removeAttr("style");
Чтобы удалить стиль из всех дочерних элементов div.preview
Ответ 7
Попробуйте сделать это
$("#frameDemo").contents().find("#div_id").parent('div').removeAttr('onclick');
$("#frameDemo").contents().find("#div_id").children('div').removeAttr('onclick');