jQuery selectors - find objects without specified

2019-01-17 09:49发布

问题:

I have several objects on a page and I want to perform an operation using jQuery only on some of them - the ones that don't have a specified attribute. So:

<li style='...'>some text</li>
<li style='...'>some other text</li>
<li>some very diffrent text</li>

and in javascript I would have:

$('li[style]').hide();

that would hide all elements with a style sttribute. But if I want to hide the ones without it, how should my selector look like?

回答1:

jQuery("li:not([style])").hide();


回答2:

You can use the :not psuedo-selector to look up elements that don't match a certain selector. In your example, you want to select all li elements without the style attribute, so you'd use something like this:

$('li:not([style])').hide();

You can also combine this with other selectors:

$('#div input:not(:checked)').show();

It's a pretty powerful tool!



回答3:

Try:

$('li:not([style])').hide();


回答4:

You may find it clearer and more performant to use the .not() method instead of the selector. As an example:

$('li').not('[style]').hide();

This is also what the jQuery devs recommend.