Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Checking if a jQuery selector doesn't find any results [duplicate]

Tags:

jquery

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())

like image 335
micho Avatar asked Aug 21 '11 21:08

micho


2 Answers

$.fn.exists = function () {     return this.length !== 0; } 

Used like:

$("#notAnElement").exists(); 
like image 171
Baz1nga Avatar answered Sep 27 '22 20:09

Baz1nga


Using length is the best way. You shouldn't use empty() or size() > 0 since that just adds another entry to the call stack.

like image 23
Chris Laplante Avatar answered Sep 27 '22 19:09

Chris Laplante