2010-12-20 19 views

Respuesta

26

Puede utilizar .filter() para seleccionar los elementos que desee, así:

$("someSelector").filter(function() { return $.data(this, "foo"); }); 

En este caso, ya que se está comprobando un valor lógico que es muy simple, para la comprobación frente a un valor sólo tiene que añadir la comparación, como esto:

$("someSelector").filter(function() { return $.data(this, "foo") == "value"; }); 
+1

¿Cuál es la ventaja de usar '$ .data (esto 'foo')' más '$ (esto) .data ('foo') '? –

+7

@Matt - No se desperdicia el objeto jQuery :) –

+0

Esto no funcionó en mí. No entiendo por qué evalúas '$ .data (this," foo ") ==" value ";' para mí funcionó reemplazándolo con '$ .data (this) .foo.id ==" idValue "; '. ¡Gracias por el consejo! ¡Realmente me ayudó! – Xeroxoid

5

No es posible con sólo el data API sin bucle a través de cada elemento en el DOM, y la comprobación para ver si contiene ese elemento de datos con el valor especificado.

Si los datos son simples, quizás pueda usar atributos de datos HTML5 que también se pueden buscar a través de selectores.

$("selector").attr("data-key", "theKey"); 

Posteriormente seleccionar todos los objetos que tienen un atributo llamado "data-key" con el valor true usando

$('[data-key="true"]') 
+0

muchas gracias. Olvidé que jquery no siempre guarda estos datos en el elemento :) – mrzmyr

Cuestiones relacionadas