Ответ 1
$('*[class=""]').removeAttr('class');
Я хочу удалить атрибут класса из всех элементов, у которых есть пустой атрибут класса.
Например:
`<li class="">One</li>`
становится
<li>One</li>
Я уже давно мучаюсь, пытаясь разобраться! Ближайший я получил
var len = $(".splitcolcontainer ul li[class]").val().length;
if (len == 0)
{
$('.splitcolcontainer ul li').removeAttr("class");
}
Но нет сигары. Я знаю, что это будет отчаянно просто, но никакое количество Гуглинга не покажет мне свет! Приветствия.
ИЗМЕНИТЬ: Как люди спрашивают, почему я хочу удалить его, вот весь script:
$(document).ready(function() {
$( '.splitcolcontainer ol, .splitcolcontainer ul').each(function() {
if($(this).is("ol")) { var ordered = true; }
var colsize = Math.round($(this).find("li").size() / 2);
$(this).find("li").each(function(i) {
if (i>=colsize) {
$(this).addClass('right_col');
}
});
if(ordered) {
$(this).find('.right_col').insertAfter(this).wrapAll("<ol class='splitcol' start='" + (colsize+1) + "'></ol>").removeClass("right_col");
} else {
$(this).find('.right_col').insertAfter(this).wrapAll("<ul class='splitcol'></ul>").removeClass("right_col");
}
});
$('.splitcolcontainer').after('<div class="clear"> </div>');
$('.splitcolcontainer ul, .splitcolcontainer ol').wrap('<div></div>');
});
Причина пустого класса заключается в том, что я добавляю класс "right_col", а затем удаляю его позже. Я не знаю, будут ли другие классы или нет, поэтому мне нужно было проверить, не является ли атрибут пустым. Спасибо за помощь до сих пор!
$('*[class=""]').removeAttr('class');
Согласен, очень странно, что removeClass
оставляет пустой атрибут класса. Я ожидал бы, что после addClass
, removeClass
вернет DOM в исходное состояние.
То, что я закончил, это:
$(this).removeClass("my-class").filter('[class=""]').removeAttr('class');
который должен быть довольно эффективным.
(Мой код предназначен для редактора HTML, поэтому важно, чтобы полученный код был как можно более чистым.)
$('li[class=""]').each(function() {
this.removeAttribute('class');
});
Вам не нужны никакие библиотеки (например, jQuery):
if (element.className == "")
element.removeAttribute('class');
После того, как документ был проанализирован и создано дерево DOM, атрибуты элемента - это действительно просто свойства отдельных объектов DOM, поэтому, хотя вы можете удалить атрибут из источника, он все равно будет присутствовать (но пустой) для каждого объекта в DOM.
Добавление/удаление классов является основной функцией библиотеки jQuery: http://docs.jquery.com/Attributes
Вы можете видеть, имеет ли данный набор элементов класс, о котором идет речь, с hasClass (http://docs.jquery.com/Attributes/hasClass#class)
И затем удалите определенный класс с помощью removeClass (http://docs.jquery.com/Attributes/removeClass#class)
Итак, если вам нужно удалить класс "abc" из определенного элемента, выполните следующие действия:
$("#element").removeClass("abc");
Это удалит ТОЛЬКО указанный класс, даже если там есть другие. Добавление класса работает таким же образом.