Редактировать: Начиная с вашего обновленного кода, я думаю, вам нужно использовать .contents()
и проверить на nodeType
, чтобы убедиться, что это текстовый узел, а затем сравнить его с текстом по мере необходимости..
$('ul li').contents().each( function () {
if (this.nodeType == Node.TEXT_NODE && this.nodeValue.match(/happy/)) {
$(this).closest('li').css('border', '1px solid red');
}
});
или используя .filter()
,
$('ul li').contents().filter( function () {
if (this.nodeType == Node.TEXT_NODE && this.nodeValue.match(/happy/)) {
return true;
}
}).closest('li').css('border', '1px solid red');
DEMO
Дайте мне знать, если это работает..
ul
должен содержать только теги li
, как показано ниже,
<ul>
<li id="1">happy</li>
<li id="2">sad <div>happy</div></li>
</ul>
Предполагая, что ваш HTML-код подобен этому, ниже приведен скрипт для получения первого списка,
$('ul li').filter (function () {
if ($(this).text() == 'happy') return true;
});
.filter
вернет li
с текстом «happy».
DEMO