2010-10-20 23 views
38

¿Existe una función equivalente en JavaScript o jQuery similar a strpos en PHP?Equivalente a jQuery o JavaScript de la función PHP strpos para buscar cadena en una página

Quiero ubicar una cadena dentro de un elemento en una página. La cadena que estoy buscando es:

td class="SeparateColumn" 

me gustaría algo donde pueda ejecutarlo como este para encontrar:

if $("anystring") 
    then do it 
+1

¿Usas el que ya existe en Javascript simple? – delnan

+0

Ya veo, ¿así que le gustaría buscar una cadena en toda la página? – JAL

+0

Cuando trato de usar en jQuery obtengo "indexOf no es una función" ¿Alguna otra forma de hacer esto con javascript? ? ? ¡AYUDA! –

Respuesta

58

supongo que te refieres comprobar si una cadena contiene un carácter, y la posición en la cadena: le gustaría usar el método indexOf() de una cadena en JS. Aquí están los relevant docs.


Bien, ¡entonces le gustaría buscar en toda la página! El selector :contains() hará eso. Consulte the jQuery docs para :contains.

Para buscar todos los elementos de la página, utilice

var has_string = $('*:contains("search text")'); 

Si obtiene los elementos de jQuery atrás, entonces la búsqueda fue un éxito. Por ejemplo, en esta misma página

var has_string=$('*:contains("Alex JL")').length 
//has_string is 18 
var has_string=$('*:contains("horsey rodeo")').length 
//has_string if 0. So, you could an `if` on this and it would work as expected. 
+2

Por supuesto, el hecho de incluir 'rodeo de caballo' en el ejemplo hace que la última parte sea técnicamente falsa, pero no entraremos en ese enigma. – JAL

+0

suena bien; cómo puedo verificar si el elemento tiene una cadena específica en esta página – Tom

+0

@Tom 'if ($ ('td.SeparateColumn: contains (" the string ")')) {/ * haz algo * /} 'debería hacerlo. – JAL

39

no es necesario para este jQuery - el viejo y simple Javascript no tendrán ningún problema, utilizando el método .indexof().

Sin embargo, si usted realmente quiere un partido de sintaxis exacta para strpos() de PHP, algo como esto lo haría:

function strpos (haystack, needle, offset) { 
    var i = (haystack+'').indexOf(needle, (offset || 0)); 
    return i === -1 ? false : i; 
} 

Nota: Esta función tomado de aquí: http://phpjs.org/functions/strpos:545

JSFiddle

+0

IE8 y versiones posteriores no son compatibles con 'indexOf'. – MacMac

+13

@YouBook que es Array.indexOf(), no String.indexOf(), que no es compatible con versiones anteriores de IE. – JAL

Cuestiones relacionadas