#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
.