2009-12-25 19 views
68

ottenere tutti i div che ha attributo classjQuery ottenere tutti i div che non hanno attributo class

$('div[class]') 

ottenere tutti i div che non hanno attributo class

$('div[class!=""]') 

questo codice funziona ma I don' t capisco perché funzioni Se il codice sopra funziona, il codice per tutti i div con attributo di classe dovrebbe essere

$('div[class=""]') 

che non produce alcun risultato.

risposta

136

provare con la :not() pseudo-class selector:

$('div:not([class])') 

Modifica

La descrizione per il jQuery selectors dicono:

  • [attribute]
    Trova gli elementi che hanno l'attributo specificato.
  • [attribute=value]
    Corrisponde a elementi con attributo specificato con un determinato valore.
  • [attribute!=value]
    Risultati elementi che o non hanno l'attributo specificato o si dispone l'attributo specificato, ma non con un certo valore.

Ciò significa che div[class=""] seleziona tutti gli elementi DIV che hanno un attributo class specificato con un valore vuoto.

Ma l'ultimo selettore è un selettore proprietario di jQuery e non uno CSS selector. Lei avrebbe bisogno di utilizzare :not() per selezionare tutti gli elementi DIV che non hanno una classe:

div:not([class]) 
+0

hmm. questo non risponde alla domanda posta. –

+14

@Scott Evernden: Beh, in effetti non riesco a vedere nessuna domanda. ;) – Gumbo

+0

Per più casi 'not', si può fare qualcosa come' div: not ([classe], [stile]) ' – jocull

4

Il selettore $('div[class=""]') recita in sostanza: "Ottenere tutti gli elementi div il cui attributo class ha una stringa vuota come il suo valore" - Questo esclude tutti gli elementi div che hanno QUALSIASI valore nell'attributo della classe, diverso da una stringa vuota, e tutti gli elementi div che non hanno l'attributo della classe impostato.

21

cosa è importante capire è che ci sono attributi vuoto classe nonché elementi senza un attributo di classe, ma richiedono diversi test per selezionare.

Esistono numerosi test che fanno tutti cose diverse.Ecco il nostro HTML per i nostri test:

<div class="">Empty Class Attribute </div> 
<div class="column">Full Class Attribute </div> 
<div>No Class Attribute </div> 

Ora, consente di eseguire i nostri test (La prima parte è semplicemente una stringa che ci aiuta a conoscere ciò che è stato appena chiamato l'allarme, altrimenti non ha senso):

$(document).ready(function(e){ 
    // Outputs "Empty Class Attribute Full Class Attribute" 
    alert("div[class] : "  + $('div[class]').text() ); 

    // Outputs "Full Class Attribute" 
    alert("div[class!=''] : " + $('div[class!=""]').text()); 

    // Outputs "Empty Class Attribute" 
    alert("div[class=''] : " + $('div[class=""]').text() ); 

    // Outputs "No class Attribute" 
    alert("div:not([class]) : " + $('div:not([class])').text() ); 
}); 

È possibile visualizzare il codice nel tuo browser visitando qui: http://jsbin.com/ijupu

Ora, armati di questa conoscenza, se si voleva selezionare ogni elemento div sulla pagina o con un attributo vuoto e nessun attributo, usa il seguente selettore:

$("div[class=''], div:not([class])"); 
-1

provare

jQuery('div[class^=""]') 

o

$('div[class^=""]') 

significa ottenere tutte div che ha classe con tutti i nomi

Problemi correlati