简体   繁体   English

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

[英]add a div.class in a child, only when the parent does not have other div.class

i have a html code like this: 我有这样的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>

and i need to add a div only on those divs that dont have that "checkclass", so it will like this: 而且我只需要在没有该“ 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>

i tried with jquery something like: 我尝试用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>');

but still nothing, any ideas? 但还是一无所有,有什么想法吗?

Try something like: 尝试类似的方法:

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

What you tried is getting all elements that not have the checkclass class. 您尝试过的是获取所有没有checkclass类的元素。 Not the DIV's that don't have a child with checkclass. 没有DIV的孩子没有checkclass。

Filter is a good solution for this: 过滤器是一个很好的解决方案:

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

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

Try this 尝试这个

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

要么

$('.someclass').not( $('.checkclass').closest('.someclass') );
if (!$(someClass).hasClass(checkClass)) {
    $(someClass).addClass(newClass);
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM