элемент поиска jquery по тексту

Может ли кто-нибудь сказать мне, можно ли найти элемент на основе его содержимого, а не id или classа ?

Я пытаюсь найти элементы, которые не имеют отдельных classов или идентификаторов. (Тогда мне нужно найти родителя этого элемента.)

    Вы можете использовать :contains селектор, чтобы получать элементы на основе их содержимого.

     
    This is a test
    Another Div
    $('div:contains("test")').css('background-color', 'red');

    Демо здесь

    в документации jquery говорится:

    Соответствующий текст может отображаться непосредственно в выбранном элементе, в любом из потомков этого элемента или в комбинации

    поэтому недостаточно, чтобы вы использовали : содержит селектор, вам также нужно проверить, является ли текст, который вы ищете, прямым содержимым элемента, на который вы нацеливаетесь … что-то вроде этого:

      function findElementByText(text){ var jSpot=$("b:contains("+text+")") .filter(function(){ return $(this).children().length === 0;}) .parent(); // because you asked the parent of that element return jSpot; } 

    Феллас, я знаю, что это старо, но эй, у меня есть это решение, которое, я думаю, работает лучше всех. Прежде всего, он преодолевает чувствительность к регистру, которую jquery: contains () поставляется с:

     var text = "text"; var search = $( "ul li label" ).filter( function () { return $( this ).text().toLowerCase().indexOf( text.toLowerCase() ) >= 0; }).first(); // Returns the first element that matches the text. You can return the last one with .last() 

    Надеюсь, что кто-то в ближайшем будущем окажется полезным.

    Да, используйте селектор jQuery.

    Ответ Rocket не работает.

     
    hhhhhh
    This is a test
    Another Div

    Я просто изменил его DEMO здесь, и вы увидите, что выбран корень DOM.

     $('div:contains("test"):last').css('background-color', 'red'); 

    добавьте « последний » в код, чтобы исправить это.

    Лучший способ, на мой взгляд.

     $.fn.findByContentText = function (text) { return $(this).contents().filter(function () { return $(this).text().trim() == text.trim(); }); }; 
    Давайте будем гением компьютера.