2009-05-23 9 views
41

Estoy tratando de registrar en jQuery si un div contiene algo de texto, y luego agrego una clase si lo hace.Jquery: Comprobando si div contiene texto, entonces acción

así que escribí algo como esto:

if($("#field > div.field-item").text().indexOf('someText') = 0) { 
     $("#somediv").addClass("thisClass"); 
    } 

ahora no recibo que esto funcione.

<div id="field"><div class="field-item">someText</div></div> 

<div id="somediv"></div> 

¿Es esto incorrecto?

Respuesta

76

Su código contiene dos problemas:

  • El operador de igualdad en JavaScript es ==, no =.
  • jQuery.text() une todos los nodos de texto de elementos coincidentes en una sola cadena. Si tiene dos elementos sucesivos, de los cuales el primero contiene 'some' y el segundo contiene 'Text', su código pensará incorrectamente que existe un elemento que contiene 'someText'.

Sugiero lo siguiente en su lugar:

if ($('#field > div.field-item:contains("someText")').length > 0) { 
    $("#somediv").addClass("thisClass"); 
} 
+2

es un poco mal, que debe ser: no contiene .contains –

+0

@TM - ¿Fue un error tipográfico. Fijo. ¡Gracias! –

+0

la sintaxis correcta es: contains y not .contains – duckyflip

1

Es posible que desee probar el selector de contains:

if ($("#field > div.field-item:contains('someText')").length) { 
    $("#somediv").addClass("thisClass"); 
} 

También, como otra mencionado, debe utilizar == === o en lugar de =.

4
if($("#field > div.field-item").text().indexOf('someText') >= 0) 

Algunos navegadores incluirán espacios en blanco, otros no lo harán. >= es apropiado aquí. De lo contrario, la igualdad es iguales dobles ==

3

Ayman es correcta, pero, se puede usar como esa, así:

if($("#field > div.field-item").text().indexOf('someText') >= 0) { 
     $("#somediv").addClass("thisClass"); 
    } 
10

Sí, ahora hizo una reflexión para mí. Y funciona bien!

if($("div:contains('CONGRATULATIONS')").length) 
         { 
          $('#SignupForm').hide(500); 
         } 

funciona bien

3

Por qué no simplemente sintaxis

var item = $('.field-item'); 
for (var i = 0; i <= item.length; i++) { 
     if ($(item[i]).text() == 'someText') { 
      $(item[i]).addClass('thisClass'); 
      //do some other stuff here 
      } 
    } 
+0

¡Muchas gracias! –

+0

respuesta no válida,. es seleccionar una clase, no una identificación div –

Cuestiones relacionadas