I'm used to Prototypejs, where $$("selector") will return null if no elements were found. This is convenient 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 you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With