Найдите, содержит ли элемент x, но не Y (jQuery)
Вопрос
<div>
<p><a href="#">link</a> some text</p>
<p><a href="#">link</a></p>
<p><a href="#">link</a> some text</p>
<p><a href="#">link</a></p>
</div>
Я хочу найти (и добавить) <p>
Теги, которые не содержат текста, непосредственно внутри себя или его детей.
Решение
Это работает нормально, мне пришлось выпустить текст из одного из ваших абзацев, чтобы проверить:
var $eles = $('p').filter(function() {
return $(this).text().length == 0;
});
$eles.addClass("foo");
Другие советы
Я полагаю, у вас есть ошибка в описании проблемы, так как тег A всегда содержит текст в примере.
Насколько я знаю, нет стандартного селектора, позволяющего проверить, есть ли прямой контент, но вы можете попробовать это:
$('p').each(function(){
var p = $(this).clone();
p.children().remove();
if(p.text().length){
$(this).addClass('gotcha');
}
});
Должен работать, если вы хотите проверить только внутренности абзаца.
Не связан с StackOverflow