Вопрос

<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');
  }
});

Должен работать, если вы хотите проверить только внутренности абзаца.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top