通过javascript向特定元素添加一个类,不要重复

通过javascript向特定元素添加一个类,不要重复,javascript,jquery,html,css,Javascript,Jquery,Html,Css,这是示例代码,解释我想要的: <div id="someId"> <div class="someClass"></div> <div class="targetClass"></div> </div> <div id="someId"> <div class="someClass"></div> <div class="targetClass"></div> &l

这是示例代码,解释我想要的:

<div id="someId">
<div class="someClass"></div>
<div class="targetClass"></div>
</div>
<div id="someId">
<div class="someClass"></div>
<div class="targetClass"></div>
</div>
<div id="someId">
<div class="someClass"></div>
</div>
结果是在第3个
div
中添加一个TargetClass,并在第一个和第二个
div
中重复相同的类


问题是我如何在最后一个
div
中添加类,而不在另一个
div
中重复它

根据您的代码判断,您希望新div作为
.someClass
div的兄弟,而不是它的子级

只需更换这一行

 $(".someClass").append($newDiv);

$(“div[id]:not(:has(.targetClass)))).append($newDiv)//将新div附加到所有没有targetclass子元素的div
var$newDiv=$(“”).addClass(“targetClass”);
$($div[id]:not(:has(.targetClass))))。追加($newDiv);

使用.last()将选择要搜索的最后一个元素

jQuery(".someClass").last().append($newDiv);

我假设父div具有唯一的ID,因为如果someId是应用于多个元素的实际ID,那么someId无效,这会使标记无效

使用
.last().parent()
将元素作为同级元素放置,因为它们共享同一父元素:

var$newDiv=$(“”)
.addClass(“targetClass”).html(“动态目标元素”)
$(“.someClass”).last().parent().append($newDiv)
div{边框:实心1px红色;边距:10px 0;}
div div{border:none;}

一些
目标
一些
目标
在此之后,应添加以下元素

如果要将带有
targetClass的div添加到带有
someId的div中,如果它不存在,可以使用
find()
函数:

if($('#someId').find('.someClass').length == 0) {
   var $newDiv = $("<div/>")
    .addClass("targetClass")
    $("#someId").append($newDiv);
}
if($('#someId').find('.someClass').length==0){
变量$newDiv=$(“”)
.addClass(“targetClass”)
$(“#someId”).append($newDiv);
}

元素的ID必须为unique@mag我假设
someId
在这里只是一个占位符,在您的实际上下文中它将是唯一的。如果我有更多的类而不是一个类,我会做什么?@MAG您是指更多没有targetClass的类?谢谢您的帮助,但不起作用没有出现effect@MAG你只会看到如果元素有一些值,如果我有一个或多个类而不是一个类,那么效果如何?我做什么?我不明白你的意思。你能再来一次吗?@MAG检查添加的代码段。如果我有更多的类而不是一个类,我会做什么?
jQuery(".someClass").last().append($newDiv);
if($('#someId').find('.someClass').length == 0) {
   var $newDiv = $("<div/>")
    .addClass("targetClass")
    $("#someId").append($newDiv);
}