如何使用JQueryselect没有特定子元素的元素
有没有一个JQueryselect器来select所有没有特定子元素的元素作为直接子元素? 例如:
<p> text in paragraph </p> <p> <div>text in div</div> </p>
我想只select第一个(没有<div>
子)。 这可能吗?
进一步的信息:其实我试图插入一个<div>
所有那些没有一个这样的expression式的<p>
:
$('p').wrapInner('<div />')
但是这会为第二个<p>
添加一个额外的<div>
<p>
。
你可以尝试:
$("p:not(:has(>div))")
您可以将:has()
[docs]select器与not
函数[docs]结合使用以实现此目的:
$("p").not(":has(div)").wrapInner("<div/>");
或者,您可以使用:not()
[docs]select器来使用单个select器:
$("p:not(:has(div))").wrapInner("<div/>");
你可以互换使用,但是IIRC,第一个更快。
看到它在jsFiddle上的行动 。
请注意, div
是块级元素, p
不是。 这意味着这是不是有效的HTML嵌套在一个div
中的div
。
尝试这个
$("p").fitler("not(:has(div))").wrapInner("<div/>");
文本元素内部的结构元素对我来说看起来很不干净,但是如果你坚持的话)
$('p').not(":has(div)").wrapInner("<div/>");
这里是一个演示: http : //jsfiddle.net/NTpES/3/
这似乎工作: $('p:not("p div")')