Checking if a jQuery selector doesn't find any results [duplicate]
I'm used to Prototypejs, where $$("selector") will return null if no elements were found. This is co开发者_开发技巧nvenient because I can do
if ($$("selector")) {}
to check if an element is in the DOM.
However, in jQuery $(selector) will return [] if no element is found, so now I need to do:
if ( $(selector).length > 0 )
This makes code slightly harder to read.
My question: What's the best way of doing this? Should I extend the jQuery object with methods like .empty() and .any(), or are there built in functions to do this?
Update: This also applies to other selectors on jQuery which should, anyways, only return one result (like parent(), or closest())
$.fn.exists = function () {
return this.length !== 0;
}
Used like:
$("#notAnElement").exists();
Using length
is the best way. You shouldn't use empty()
or size() > 0
since that just adds another entry to the call stack.
if ( $(selector)[0] )
That'll do it.
精彩评论