Как выбрать элементы, которые не имеют определенного дочернего элемента с JQuery
Есть ли селектор JQuery для выбора всех элементов, которые не имеют определенного дочернего элемента в качестве прямого дочернего элемента? Например:
text in paragraph
text in div
Я хочу выбрать только
s, как первый (без дочернего
Дополнительная информация: На самом деле я пытаюсь вставить
, у которых нет такого выражения:
$('p').wrapInner('')
Но это добавит дополнительный
.
- Подстановочные знаки в селекторах jQuery
- Почему мой jQuery: not () не работает в CSS?
- Эффективный, лаконичный способ найти следующий соответствующий друг?
- Какие селектора CSS3 действительно поддерживают jQuery, например: nth-last-child ()?
- addID в jQuery?
- jQuery mobile - для каждого события прямого трансляционного события должно существовать эквивалентное событие click?
- jQuery выбрать все, кроме первого
- Как я могу выбрать элемент с несколькими classами в jQuery?
Вы можете попробовать:
$("p:not(:has(>div))")
Вы можете комбинировать селектор :has()
[docs] с функцией not
[docs], чтобы добиться этого:
$("p").not(":has(div)").wrapInner("");
Кроме того, вы можете использовать один селектор с помощью селектора :not()
[docs] :
$("p:not(:has(div))").wrapInner("");
Вы можете использовать либо взаимозаменяемые, но IIRC, первый – быстрее.
Посмотрите его в действии на jsFiddle .
Обратите внимание, что div
является элементом уровня блока, а p
– нет. Это означает, что недействительно HTML иметь div
вложенный в p
.
структурные элементы внутри текстовых элементов выглядят очень нечистыми для меня, но если вы настаиваете;)
$('p').not(":has(div)").wrapInner("");
вот демонстрация: http://jsfiddle.net/NTpES/3/
Попробуй это:
$("p").filter("not(:has(div))").wrapInner("");
Кажется, что это работает: $('p:not("p div")')