Проверка, является ли атрибут класса пустым, а затем удаляет его, если true с помощью jQuery

Я хочу удалить атрибут класса из всех элементов, у которых есть пустой атрибут класса.

Например:

`<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">&#160;</div>');
    $('.splitcolcontainer ul, .splitcolcontainer ol').wrap('<div></div>');
});

Причина пустого класса заключается в том, что я добавляю класс "right_col", а затем удаляю его позже. Я не знаю, будут ли другие классы или нет, поэтому мне нужно было проверить, не является ли атрибут пустым. Спасибо за помощь до сих пор!

Ответы

Ответ 1

$('*[class=""]').removeAttr('class');

Ответ 2

Согласен, очень странно, что removeClass оставляет пустой атрибут класса. Я ожидал бы, что после addClass, removeClass вернет DOM в исходное состояние.

То, что я закончил, это:

$(this).removeClass("my-class").filter('[class=""]').removeAttr('class');

который должен быть довольно эффективным.

(Мой код предназначен для редактора HTML, поэтому важно, чтобы полученный код был как можно более чистым.)

Ответ 3

$('li[class=""]').each(function() {
    this.removeAttribute('class');
});

Ответ 4

Вам не нужны никакие библиотеки (например, jQuery):

if (element.className == "")
    element.removeAttribute('class');

Ответ 5

После того, как документ был проанализирован и создано дерево DOM, атрибуты элемента - это действительно просто свойства отдельных объектов DOM, поэтому, хотя вы можете удалить атрибут из источника, он все равно будет присутствовать (но пустой) для каждого объекта в DOM.

Ответ 6

Добавление/удаление классов является основной функцией библиотеки 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");

Это удалит ТОЛЬКО указанный класс, даже если там есть другие. Добавление класса работает таким же образом.