Come confrontare jQuery oggetti?

Quindi sto cercando di capire come confrontare due oggetti jQuery, per vedere se l’elemento principale è il corpo di una pagina.

ecco quello che ho:

if ( $(this).parent() === $('body') ) ...

So che questo è sbagliato, ma se c’è qualcuno che capisce quello che voglio dire, potrebbe puntare verso di me il modo corretto di fare questo?

 

4 Replies
  1. 157

    È necessario confrontare il raw elementi del DOM, ad esempio:

    if ($(this).parent().get(0) === $('body').get(0))

    o

    if ($(this).parent()[0] === $('body')[0])
    • Che solo di garantire l’uguaglianza se l’oggetto jQuery abbinato un singolo elemento del DOM. Se ci sono più partite, avrei bisogno di un ciclo di qualche tipo per confrontare ognuno di essi.
    • sì, ma questo è sufficiente per l’OP requisiti, vuole solo sapere “… se l’elemento principale è il corpo …”
    • Può ridurre a: se(per questo.parentNode === document.corpo);
    • IMHO, questo potrebbe essere utile http://learn.jquery.com/using-jquery-core/jquery-object/#not-all-jquery-objects-are-created
  2. 59

    Perché non:

    if ($(this).parent().is("body")) {
      ...
    }

    ?

    • O if ($(this).parent().is($("body")))
  3. 18

    Loop non è richiesto il test il primo singolo nodo non è necessario. Praticamente nulla è richiesto di garantire che essi sono della stessa lunghezza e condividono gli stessi nodi. Qui è un piccolo snippet di codice. Si potrebbe anche voler convertire questo in un plugin per jquery per i propri usi.

    jQuery(function($) {
      //Two separate jQuery references
      var divs = $("div");
      var divs2 = $("div");
    
      //They are equal
      if (divs.length == divs2.length && divs.length == divs.filter(divs2).length) {         
    
      //They are not
      } else {}
    });
    • Questo non può dire che i seguenti tabelle sono uguali? <div>abc</div> <div>def</div>
    • No, il filtro non passa DOM elementi che non sono uguali.
  4. 2

    Mi sono imbattuto in queste risposte, e mi chiedevo quale fosse meglio. Tutto dipende dalle vostre esigenze, ma il più facile da digitare, la lettura e l’esecuzione è il migliore del corso. Ecco il perf testcase ho fatto per prendere una decisione.

    http://jsperf.com/jquery-objects-comparison

    • Raw Elementi del DOM 2 relazioni più veloce per me: sembra lo stesso per ogni altro segnalato browser troppo.
    • Esattamente, è la stessa come la prima, ma utilizza javascript nativo matrice di analisi.

Lascia un commento