Estoy tratando de comprobar en jQuery si un div que contiene un texto y, a continuación, agregar una clase si lo hace.

Así que escribí algo como esto:

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

No estoy recibiendo este trabajo.

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

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

Es esto incorrecto?

InformationsquelleAutor | 2009-05-23

6 Comentarios

  1. 87

    El código contiene dos problemas:

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

    Sugiero el siguiente lugar:

    if ($('#field > div.field-item:contains("someText")').length > 0) {
        $("#somediv").addClass("thisClass");
    }
    • Tengo dos tipo de texto «Seguir» & «Siguiente» en divs. cómo encontrar el texto exacto con divs. ejemplo. 5 divs con «Seguir» & 2 divs con «Siguiente» para poner fuera de muestra 7 para «Seguir» a & 2 para «Siguiente»
  2. 15

    Sí, ahora me hizo pensar por mí. Y funciona bien!!!

    if($("div:contains('CONGRATULATIONS')").length)
                            {
                                $('#SignupForm').hide(500);
                            }
  3. 4
    if( $("#field > div.field-item").text().indexOf('someText') >= 0)

    Algunos navegadores incluyen espacios en blanco, otros no. >= es apropiado aquí. De lo contrario, la igualdad es doble es igual a ==

  4. 3

    Ayman es correcto pero, se puede utilizar como que así :

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

    ¿Por qué no simplemente

    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
              }
         }
    • no es válida la respuesta, . es para seleccionar una clase, no un div id
  6. 1

    Es posible que desee probar el contains selector:

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

    También, como los otros mencionados, debe utilizar == o === en lugar de =.

Dejar respuesta

Please enter your comment!
Please enter your name here