Domanda Verifica se un selettore jQuery non trova alcun risultato [duplicato]


Questa domanda ha già una risposta qui:

Sono abituato a Prototypejs, dove $$ ("selettore") restituirà null se non sono stati trovati elementi. Questo è conveniente perché posso farlo

if ($$("selector")) {}

per verificare se un elemento è nel DOM.

Tuttavia, in jQuery $ (selettore) verrà restituito [] se non viene trovato alcun elemento, quindi ora devo fare:

if ( $(selector).length > 0 )

Questo rende il codice leggermente più difficile da leggere.

La mia domanda: qual è il modo migliore per farlo? Dovrei estendere l'oggetto jQuery con metodi come .empty () e .any (), o ci sono funzioni integrate per farlo?

Aggiornamento: questo vale anche per altri selettori su jQuery che dovrebbero, comunque, restituire solo un risultato (come parent () o closer ())


32
2017-08-21 21:35


origine


risposte:


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

Usato come:

$("#notAnElement").exists();

32
2017-08-21 21:39



utilizzando length è il modo migliore. Non dovresti usare empty() o size() > 0 dal momento che aggiunge semplicemente un'altra voce allo stack delle chiamate.


15
2017-08-21 21:38



if ( $(selector)[0] )

Questo lo farà


11
2017-08-21 21:39