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

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

$('div[class]') 

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

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

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

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

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

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

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

редактировать

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

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

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

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

 div:not([class]) 

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

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

 
Empty Class Attribute
Full Class Attribute
No Class Attribute

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

 $(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])"); 

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

пытаться

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

или

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

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

  • Доступ к css ": после" селектор с jQuery
  • Разница между CSS-селектором и фильтром jQuery?
  • Селектор jQuery: Id заканчивается?
  • jQuery ИЛИ Селектор?
  • jQuery или CSS-селектор, чтобы выбрать все идентификаторы, начинающиеся с некоторой строки
  • Является ли jQuery каким-либо кэшированием «селекторов»?
  • Какие селектора CSS3 действительно поддерживают jQuery, например: nth-last-child ()?
  • jQuery .bind () vs. .on ()
  • jQuery scrollTop не работает в Chrome, но работает в Firefox
  • использовать jQuery's find () для объекта JSON
  • Каков самый быстрый способ выбора элементов-потомков в jQuery?
  • Давайте будем гением компьютера.