只有在父级没有其他div.class时才在子级中添加div.class

时间:2011-11-22 09:44:39

标签: javascript jquery html

我有一个像这样的HTML代码:

<div class="someclass">
    <div class="childclass"></div>
    <div class="checkclass"></div>
</div>
<div class="someclass">
    <div class="childclass"></div>
</div>
<div class="someclass">
    <div class="childclass"></div>
    <div class="checkclass"></div>
</div>
<div class="someclass">
    <div class="childclass"></div>
    <div class="checkclass"></div>
</div>
<div class="someclass">
    <div class="childclass"></div>
</div>

我需要在那些没有“checkclass”的div上添加div,所以它会这样:

<div class="someclass">
    <div class="childclass"></div>
    <div class="checkclass"></div>
</div>
<div class="someclass">
    <div class="childclass"></div>
    <div class="newclass"></div>
</div>
<div class="someclass">
    <div class="childclass"></div>
    <div class="checkclass"></div>
</div>
<div class="someclass">
    <div class="childclass"></div>
    <div class="checkclass"></div>
</div>
<div class="someclass">
    <div class="childclass"></div>
    <div class="newclass"></div>
</div>

我尝试使用jquery之类的东西:

$('.someclase:not(children(hasClass(checkclass))').append('<div class="newclass"></div>');
$('.someclass:not(:children(.checkclass))').append('<div class="newclass"></div>');
$('.someclass > :not(.checkclass)').append('<div class="newclass"></div>');

但仍然没有任何想法?

5 个答案:

答案 0 :(得分:4)

尝试类似:

$(".someclass").each(function(){
    if(!$(this).find(".checkclass").length)
    {
        $(this).append("<div class='checkclass' />");
    }
});

您尝试的是获取没有checkclass类的所有元素。不是没有带有支票类的孩子的DIV。

答案 1 :(得分:0)

Filter是一个很好的解决方案:

$('div.someclass').filter(function() {
    return $(this).children('div.checkclass').length === 0;
}).append('<div class="newclass"></div>');

http://jsfiddle.net/infernalbadger/GKgc9/

答案 2 :(得分:0)

试试这个

        $('.someclass').each(function(){
            if(!$(this).find('.checkclass').length){
                $(this).append('<div class="newclass">Test</div>');
            }
        });

答案 3 :(得分:0)

$(':not .checkclass').closest('.someclass');

$('.someclass').not( $('.checkclass').closest('.someclass') );

答案 4 :(得分:-1)

if (!$(someClass).hasClass(checkClass)) {
    $(someClass).addClass(newClass);
}