2011-01-26 1 views
6

Sto tentando:JQuery può selezionare un testo da <label> o enumerarne gli attributi?

$('label[text="someValue"]) 

ma sto ottenendo un insieme vuoto tornato, molto probabilmente, dal momento che il testo non è un attributo.

È possibile selezionare tramite il testo dell'elemento o l'html interno?

Modifica::contains("someValue) non è abbastanza rigido, poiché restituirà qualsiasi corrispondenza di someValue come sottostringa.

Esiste un modo per enumerare tutti gli attributi dell'elemento per indagare/interrogarli durante il debug/l'esecuzione?

+1

Che cosa vuoi dire con * E ' c'è un modo per enumerare tutti gli attributi dell'elemento *? È possibile scorrere le proprietà di un oggetto con 'for (var prop in obj)'. È ciò che intendi? Con Firebug o direttamente in Chrome, puoi anche ottenere un elenco di un oggetto con 'console.dir (obj)'. –

+0

Sì, volevo vedere cosa un elenco di attributi impostato per quell'elemento. Il ciclo 'for' sembra un buon modo per farlo. Grazie Felix. – StuperUser

risposta

12

È possibile selezionarli tutti e poi filtrare verso il basso per un sottoinsieme più piccolo utilizzando filter:

$('label').filter(function() { 
    return $(this).text() === "someValue"; 
}); 
0

C'è una funzione per ottenere il testo di un elemento:

http://api.jquery.com/html/

var labelText = $('.parentClass label').html(); 

Cosa attributi vuoi aggiungere ad un'etichetta? Si potrebbe assegnare le variabili agli attributi dell'etichetta (mi piacerebbe di solito vogliono l'attributo for se stavo lavorando con le etichette):

var labelAttr = $('.parentClass label').attr('for'); 
+0

'text()' potrebbe essere migliore di 'html()'. Se 'label' ha un elemento' input' dentro, il primo restituirà l'HTML di quell'input, mentre il secondo restituirà solo il testo. –

+0

Voglio enumerare tutti gli attributi dell'elemento. Uso quasi sempre un 'for', ma questa etichetta non è per un input e la funzionalità aggiuntiva del focus si interfaccia con altre funzionalità della pagina. – StuperUser

+0

Controlla la risposta qui sotto ... fa esattamente quello che vuoi. –

1

testato questo:

$.each($("#form label"), function() { 
     var nodes = this.attributes; 
     for(var i=0; i<nodes.length; i++) 
     { 
      alert(nodes[i].nodeName); 
     alert(nodes[i].nodeValue); 
     } 
    });