Найти html-текст и родительский тег

#jquery

#jquery

Вопрос:

Существует такая структура

 <tr class="">
   ...               
                        <span class="">my-marker-1</span>
   ...
 </tr>
  

Как найти только слово «маркер» и присвоить tr специальный класс?

Комментарии:

1. не могли бы вы немного прояснить свой вопрос?

Ответ №1:

Вы могли бы использовать :contains() селектор:

 $("tr:contains(my-marker-1)").addClass("my-class-1");
  

Однако вы должны знать, что :contains() выполняет поиск по шаблону в тексте элемента, чтобы он соответствовал cat в category или pit в capital . Если это слишком широко для вас, вы можете использовать filter() :

 $("tr").filter(function () { 
    return $(this).find("span").text() == "my-marker-1";
}).addClass("my-class-1");
  

Ответ №2:

Попробуйте что-то вроде этого.

 $("tr td span.label-field").val("marker").closest("tr").addClass("special");
  

Ответ №3:

Если «маркер» всегда будет находиться в промежутке:

 $("span").each(function() {
    if ($(this).text() == "my-marker-1") {
        $(this).parent("tr").addClass("special_class");
    }
});
  

Ответ №4:

Предполагая, что вы хотите применить класс ко всем TR s с классом tabledrag-leaf , которые содержат области с текстом, содержащим слово «маркер», это сделает то, что вам нужно:

 $('tr.tabledrag-leaf td').filter( function () {
    return $(this).children('span.label-field').html().indexOf('marker') !== -1;
}).parent().addClass('has-marker');
  

Смотрите jQuery.filter() подробнее о том, как это работает.

Комментарии:

1. Это применяло бы класс к td элементу, а не к tr .