使用jQuery NOT选择器来排除具有特定子元素的元素.

DA.*_*DA. 16 jquery jquery-selectors

我有一个函数将一些HTML附加到元素.它可能不止一次被调用,所以我只希望它将HTML附加到尚未添加HTML的元素中.

例:

<div class="divToAppendTo"></div>
<div class="divToAppendTo"><span class="myAppendedMarkup"></span></div>
Run Code Online (Sandbox Code Playgroud)

因此,我想选择没有.myAppendedMarkup的直接孩子的所有.divToAppendTo

我对它的刺痛似乎不起作用:

$(".divToAppendTo:not(>span.myAppendedMarkup)")
Run Code Online (Sandbox Code Playgroud)

它总是在我打电话时附加(从而复制内容).

Rus*_*Cam 17

尝试

$("div.divToAppendTo:not(:has(span.myAppendedMarkup))")
Run Code Online (Sandbox Code Playgroud)

要么

$("div.divToAppendTo").filter(function() { 
    return $(this).children('span.myAppendedMarkup').length == 0;  
});
Run Code Online (Sandbox Code Playgroud)


Sou*_*sou 5

如果你不介意,我想我可能会有一个更容易的解决方案,你正在尝试做什么.

每当你.divToAppendTo$(this).removeClass("divToAppendTo"); 这种方式附加HTML时,你只需要选择,.divToAppendTo同时确保它没有附加任何代码.

如果您将此类用于其他内容,则可以始终使用另一个类来执行此操作.


Bra*_*nry 5

你可以做:

$(".divToAppendTo:not(:has(span.myAppendedMarkup))");
Run Code Online (Sandbox Code Playgroud)