¿Cómo selecciono un lapso que contiene un valor de texto específico, usando jquery?

2 minutos de lectura

¿Cómo encuentro el intervalo que contiene el texto “FIND ME”?

<div>
   <span>FIND ME</span>
   <span>dont find me</span>
</div>

  • posible duplicado de jquery find elemento por texto

    – Félix Kling

    24 de febrero de 2012 a las 3:17

avatar de usuario
mal

http://api.jquery.com/contains-selector/

$("span:contains('FIND ME')")

hora estimada de llegada:

El selector de contenido es agradable, pero filtrar una lista de tramos es probablemente más rápido: http://jsperf.com/jquery-contains-vs-filter

$("span").filter(function() { return ($(this).text().indexOf('FIND ME') > -1) }); -- anywhere match
$("span").filter(function() { return ($(this).text() === 'FIND ME') }); -- exact match

  • eso responde mi siguiente pregunta? stackoverflow.com/questions/9424509/…

    – Curandero

    24 de febrero de 2012 a las 2:27


  • Sí. El filtro es la respuesta nuevamente, pero esta vez verifica el valor completo de .text() para encontrar una coincidencia en lugar de buscar el índice. Respuesta actualizada.

    – Malk

    24 de febrero de 2012 a las 2:31

  • Gracias Malk! No había oído hablar de filter(). A veces es necesario, ya que contiene () es una comparación de comodines, por lo que encontrará ‘FIND ME’ y ‘DON’T FIND ME’, lo que no es útil si necesita una coincidencia exacta

    – Peadar

    14 de enero de 2013 a las 11:17

Usar contiene:

$("span:contains('FIND ME')")

  • Esto no funciona. En el OP tiene dos tramos: find mey dont find me. Está verificando si el lapso contiene este texto, por lo que encontró ambos.

    – Pablo

    9 abr 2021 a las 21:10

Por cierto, si quisieras usar esto con una variable, lo harías de esta manera:

function findText() {
    $('span').css('border', 'none');  //reset all of the spans to no border
    var find = $('#txtFind').val();   //where txtFind is a simple text input for your search value
    if (find != null && find.length > 0) {
        //search every span for this content
        $("span:contains(" + find + ")").each(function () {
            $(this).css('border', 'solid 2px red');    //mark the content
        });
     }
}

Creo que esto funcionará

var span;
$('span').each(function(){
  if($(this).html() == 'FIND ME'){
    span = $(this);
  }
});

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad