2011-09-29 11 views
15

? Quiero crear un selector para buscar elementos que tengan atributos que comiencen con una cadena. En este punto, supongo que este selector no existe. ¿Debo extender las capacidades del selector? Extending jQuery’s selector capabilities por James Padolsey¿Cómo puedo encontrar elementos que contengan un atributo data- * que coincida con un prefijo usando jquery

Necesito expresar algo como el atributo Contiene selector de prefijo [name | = "value"], pero en lugar de coincidir con "valor", necesito hacer coincidir el nombre del atributo, y no valor del atributo.

<tag data-plugin-option1="val1" data-plugin-option2="val2" />

Me gustaría terminar con una sintaxis como esta: $('tag(:attr|="data-plugin")') que debe encontrar el elemento tag porque tiene al menos un elemento que comienza con data-plugin

+2

pienso '.data()' analiza éstos de forma automática, aunque podría haber sido sólo en HTML 5, no puedo recordar en este momento –

+2

@Pekka: Creo que OP está buscando un selector que devuelva * elementos * que tengan un nombre de atributo coincidente (o nombre parcial). – user113716

+0

Sí, estoy buscando un selector que devuelva elementos. – JJS

Respuesta

11

Bueno, supongo que me Estoy leyendo tu pregunta de manera diferente.

De la forma en que lo leí, desea crear un selector personalizado que seleccione los elementos que tienen un nombre de atributo determinado (o el inicio de ese nombre).

Si es así, creo que necesitaría iterar de la colección attributes para cada elemento.

DEMO:http://jsfiddle.net/GgmM7/

$.extend($.expr[':'],{ 
    attrNameStart: function(el,i,props) { 

     var hasAttribute = false; 

     $.each(el.attributes, function(i,attr) { 
      if(attr.name.indexOf(props[3]) !== -1) { 
       hasAttribute = true; 
       return false; // to halt the iteration 
      } 
     }); 

     return hasAttribute; 
    } 
}); 

$('img:attrNameStart(data-plugin)') 
+0

ese es un código hermoso. No estoy seguro de por qué estoy tan distraído que me olvidé de la propiedad 'attributes' en un elemento dom. ¡muchas gracias! – JJS

+0

@JJS: De nada. – user113716

+0

simplemente increíble. Gracias. – itslittlejohn

Cuestiones relacionadas