Подтвердить что ты не робот

JQuery получить все div, которые не имеют атрибута класса

получить все div, которые имеют атрибут класса

$('div[class]')

получить все div, которые не имеют атрибута класса

$('div[class!=""]')

Этот код работает, но я не понимаю, почему он работает. Если приведенный выше код работает, то код для всех div с атрибутом класса должен быть

$('div[class=""]') 

который не дает никакого результата.

4b9b3361

Ответ 1

Попробуйте с помощью :not() селектор псевдокласса:

$('div:not([class])')

Edit

Описание селекторов jQuery говорит:

  • [attribute]
    Соответствует элементам, у которых есть указанный атрибут.
  • [attribute=value]
    Соответствует элементам, которые имеют указанный атрибут с определенным значением.
  • [attribute!=value]
    Соответствует элементам, которые либо не имеют указанного атрибута, либо имеют указанный атрибут, но не имеют определенное значение.

Это означает, что div[class=""] будет выбирать все элементы DIV, у которых есть атрибут class, заданный с пустым значением.

Но последний селектор является проприетарным селектором jQuery, а не селектором CSS. Вам нужно будет использовать :not() для выбора всех элементов DIV, у которых нет класса:

div:not([class])

Ответ 2

Важно понимать, что существуют пустые атрибуты класса, а также элементы без атрибута класса, но для их выбора требуются различные тесты.

Существует множество тестов, которые делают разные вещи. Вот наш HTML для наших тестов:

<div class="">Empty Class Attribute </div>
<div class="column">Full Class Attribute </div>
<div>No Class Attribute </div>

Теперь давайте запустим наши тесты (первая часть - это просто строка, которая помогает нам узнать, что было вызвано в сообщении, иначе это бессмысленно):

$(document).ready(function(e){
  // Outputs "Empty Class Attribute Full Class Attribute"
  alert( "div[class] : "     + $('div[class]').text()     );

  // Outputs "Full Class Attribute"
  alert( "div[class!=''] : " + $('div[class!=""]').text() );

  // Outputs "Empty Class Attribute" 
  alert( "div[class=''] : "  + $('div[class=""]').text()  );

  // Outputs "No class Attribute"
  alert( "div:not([class]) : " + $('div:not([class])').text()     );
});

Вы можете просмотреть этот код в своем браузере, посетив здесь: http://jsbin.com/ijupu

Теперь, вооружившись этими знаниями, если вы хотите выбрать каждый элемент div на странице с помощью пустого атрибута и без атрибута, используйте следующий селектор:

$("div[class=''], div:not([class])");

Ответ 3

Селектор $('div[class=""]') по существу гласит: "Получить все элементы div, у которых атрибут класса имеет пустую строку в качестве значения". - Это исключает все элементы div, которые имеют ЛЮБОЕ значение в атрибуте class, отличном от пустой строки, и все элементы div, которые вообще не имеют атрибута класса.

Ответ 4

попробовать

jQuery('div[class^=""]')

или

$('div[class^=""]')

это означает получить все div, которые имеют класс с любыми именами