Как фильтровать нежелательные элементы с помощью jQuery

позволяет взять, например, два div,

И этот fragment jQuery, как следует из:

 $('.main').css('background-color','red'); 

Это изменит оба цвета фонового цвета на красный, как обычно. Я хотел бы знать, как изменить этот цвет для div, которые имеют только «основной», как class, а не «главное право»,

 $('.main:not(.right)').css('background-color','red'); 

Или же:

 $('.main').not('.right').css('background-color','red'); 

Если бы для более сложных условий это можно было сделать с помощью функции filter :

 $('.main').filter(function(){ return $(this).data('value') == 2 && this.innerHTML.length < 50; }).css('background-color','red'); 

Он будет отфильтровывать результат .main и поддерживать только элемент, для которого их data-value 2, и их innerHTML.length < 50 .


Если вы не знаете, какие другие classы могут быть main но вам нужны элементы, которые имеют только main class.

 $('.main').filter(function(){ return $.trim(this.className) == 'main'; }).css('background-color','red'); 

используйте селектор «not ()».

$('.main:not(.right))
или как: $('.main').not('.right')

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

 $('.main').filter(function(){ return /^\s*main\s*$/.test(this.className); }).css('background-color','red');