2011-01-26 12 views
6

Estoy intentando:¿Puede JQuery seleccionar por un texto <label> o enumerar sus atributos?

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

pero estoy consiguiendo un conjunto vacío devuelto, lo más probable ya que el texto no es un atributo.

¿Es posible seleccionar por texto del elemento o html interno?

Editar::contains("someValue) no es lo suficientemente estricto, ya que devolverá cualquier coincidencia de someValue como una subcadena.

¿Hay alguna manera de enumerar todos los atributos del elemento para investigarlos/interrogarlos durante la depuración/ejecución?

+1

¿Qué es exactamente lo que quiere decir con * son hay una manera de enumerar todos los atributos del elemento *? Puede iterar sobre las propiedades de un objeto con 'for (var prop in obj)'. ¿Es esto lo que quieres decir? Con Firebug o directamente en Chrome, también puede obtener una lista de un objeto con 'console.dir (obj)'. –

+0

Sí, quería ver qué lista de atributos había establecido para ese elemento. El bucle 'for' parece una buena manera de hacerlo. Gracias Félix. – StuperUser

Respuesta

12

Puede seleccionar a todos y después se filtra hacia abajo a un subconjunto más pequeño usando filter:

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

Hay una función para conseguir el texto de un elemento:

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

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

Lo atributos que agregarías a una etiqueta? Se podría asignar variables a los atributos de la etiqueta (por lo general me quiero para el atributo si yo estaba trabajando con etiquetas):

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

'text()' podría ser mejor que 'html()'. Si la 'etiqueta' tiene un elemento' input' adentro, el primero devolverá el HTML de esa entrada, mientras que el último solo devolverá el texto. –

+0

Quiero enumerar todos los atributos del elemento. Casi siempre uso un 'for' pero esta etiqueta no es para una entrada y la funcionalidad adicional del foco se integra con otras funcionalidades de la página. – StuperUser

+0

Echa un vistazo a la respuesta a continuación ... hace exactamente lo que quieres. –

1

probado esto:

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