如何使用jQuery过滤不需要的元素

让我们举两个div,

这个jQuery片段如下:

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

这将正常地将div背景颜色更改为红色。 我想知道如何改变那些只有“主”作为类而不是“主权”的div的颜色,

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

要么:

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

如果必须使用更复杂的条件,可以使用filterfunction:

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

它将过滤掉.main的结果,并仅维护其data-value 2且innerHTML.length < 50元素。


如果您不知道其他类可能是什么,但您想要只有main类的元素。

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

使用’not()’选择器。

$('.main:not(.right))
或者像: $('.main').not('.right')

在我看来,您想要在应用样式之前validation“main”是唯一的类。 您可以通过快速正则表达式测试来完成此操作:

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