2011-04-30 13 views
5

con jQuery, se puede utilizar:Modo de empleo: contiene (texto) con cualquier texto con jQuery

$(":contains(hello)") 

le proporcione cualquier elemento coincidente que contiene el texto "hola".

Quiero ser capaz de hacer coincidir cualquier texto, especialmente "hola :)".

$(":contains(hello :))") // Doesn't work 
$(":contains('hello :)')") // Doesn't work 
$(":contains('hello :\)')") // Doesn't work 

¿Cómo puedo encontrar elementos que contengan "hello :)" con jQuery?

Respuesta

4

Ver cómo this answer cómo.

Básicamente consiste en .filter de moverse por a known :contains bug:

$('#demo').filter(function(i, el) { 
    return !!$(el).text().match(/hello :\)/); 
}); 

vivo example.

Tenga en cuenta que la realización de .length en el resultado de esto puede darle un valor mayor que 1 aunque sólo uno de los elementos que contiene el texto, ya que los padres del elemento también coincidirán.

+0

+1 por buen mashup;) – Alp

0

de jQuery:!.?

Si desea utilizar cualquiera de los meta-caracteres (como "# $% & '() * +,/:; < => @ []^`{|} ~) como parte literal de un nombre, debe escapar del personaje con dos barras invertidas: \\

a fin de tratar este

$(":contains('hello \\:\\)')") 
+2

Parece que [no funciona] (http://jsfiddle.net/alexdickson/q3Uyh/). – alex

+0

[¿Lo intentó?] (Http://jsfiddle.net/HrFGK/) –

+0

No funciona ... –

1

esto parece ser un error accesible: http://bugs.jquery.com/ticket/5482

Y hay esta statement de jakkob:

También encontraron que el error viene sólo si el soporte es al final de la contiene la expresión personal.

+0

. Sin embargo, esta respuesta no proporciona una solución. –

0

Código rápido:

jQuery.fn.contains = function(re) { 
    return this.filter(function(i, el) { 
    return !$(el).text().match(RegExp(re)); 
    }); 
}; 

De esta manera usted puede hacer:

$("*").contains(":\\)") // returns all elements in the page that contains ':)' 

Nota: contains() acepta una expresión regular (lo que significa que necesita para escapar de lo que haya escapado de una expresión regular)

Cuestiones relacionadas