Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果类存在,则将类添加到嵌套的div;如果类不存在,则将类添加到所有';T_Javascript_Jquery_Html_Css - Fatal编程技术网

Javascript 如果类存在,则将类添加到嵌套的div;如果类不存在,则将类添加到所有';T

Javascript 如果类存在,则将类添加到嵌套的div;如果类不存在,则将类添加到所有';T,javascript,jquery,html,css,Javascript,Jquery,Html,Css,好的,我有以下结构: <div class="class"> <div class="test"></div> <div class="test">test</div> <div class="test">test</div> <div class="test">test</div> <div class="test">test</

好的,我有以下结构:

<div class="class">
    <div class="test"></div>
    <div class="test">test</div>
    <div class="test">test</div>
    <div class="test">test</div>
    <div class="test">test</div>
    <div class="test">test</div>
</div>
<div class="class">
    <div class="test"></div>
    <div class="test">test</div>
    <div class="test">test</div>
    <div class="test">test</div>
    <div class="test">test</div>
    <div class="test reserved">test</div>
</div>
<div class="class">
    <div class="test"></div>
    <div class="test">test</div>
    <div class="test">test</div>
    <div class="test">test</div>
    <div class="test">test</div>
    <div class="test">test</div>
</div>
如何将类添加到
.checkin
.reserved
之间的所有嵌套
.test
div中,如果
.reserved
不存在,则将该类添加到所有
.test
div中

您需要使用

说明:确定是否存在任何匹配的元素 分配给给定的类

你需要使用

说明:确定是否存在任何匹配的元素 分配给给定的类

试试这个:

$('.test').on('click', function () {
    $(this).nextUntil('.reserved').andSelf().addClass('checkin');
});

试试这个:

$('.test').on('click', function () {
    $(this).nextUntil('.reserved').andSelf().addClass('checkin');
});

试试这个

$('.test').on('click',function(){
$(this).addClass('checkin').nextUntil('.preserved').addClass('checkin');   
    for (var i = 0; i < $(this).parent().nextAll('.class').length;i++){
        var $class=$(this).parent().nextAll('.class').eq(i);
        if($class.find('.reserved').length ==0){

        }else{
            $class.find('.test:first').nextUntil('.reserved').addClass('checkin');
        }
    }
});
$('.test')。在('click',function()上{
$(this).addClass('checkin').nextUntil('.preserved').addClass('checkin');
对于(var i=0;i<$(this).parent().nextAll('.class').length;i++){
var$class=$(this.parent().nextAll('.class').eq(i);
if($class.find('.reserved')。长度==0){
}否则{
$class.find('.test:first').nextUntil('.reserved').addClass('checkin');
}
}
});
试试这个

$('.test').on('click',function(){
$(this).addClass('checkin').nextUntil('.preserved').addClass('checkin');   
    for (var i = 0; i < $(this).parent().nextAll('.class').length;i++){
        var $class=$(this).parent().nextAll('.class').eq(i);
        if($class.find('.reserved').length ==0){

        }else{
            $class.find('.test:first').nextUntil('.reserved').addClass('checkin');
        }
    }
});
$('.test')。在('click',function()上{
$(this).addClass('checkin').nextUntil('.preserved').addClass('checkin');
对于(var i=0;i<$(this).parent().nextAll('.class').length;i++){
var$class=$(this.parent().nextAll('.class').eq(i);
if($class.find('.reserved')。长度==0){
}否则{
$class.find('.test:first').nextUntil('.reserved').addClass('checkin');
}
}
});

您可以使用jquery nextUntil()函数:

这对于你的确切问题来说是很好的,但是如果你想稍微调整一下,你应该回到愚蠢的野蛮方法:获取数组并用布尔值在其上循环

$('.test').on('click', function(e){
    //add the class to your target
    $(e.target).addClass('checkin');

    //get an array of all the .test divs in the .class div you click
    var arTests = $(e.target).parent().find('div.test');
    //if you want to loop on all the .test of the page, just go like that :
    // var arTests = $('div.test');

    //boolean to check in the loop
    var boCheckinPased = false;
    var boReservedPassed = false;

    for(var i = 0; i < arTests.length; i++) {
        if($(arTests[i]).hasClass('checkin')) boCheckinPased = true;
        if($(arTests[i]).hasClass('reserved')) boReservedPassed = true;

        //if passed the first checkin and not yet the reserved, add the class
        if(boCheckinPased && !boReservedPassed) $(arTests[i]).addClass('checkin')
    }
});
$('.test')。在('click',函数(e)上{
//将类添加到目标中
$(e.target).addClass('checkin');
//获取所单击的.class div中所有.test div的数组
var arTests=$(e.target).parent().find('div.test');
//如果要循环页面的所有.test,只需执行以下操作:
//var arTests=$('div.test');
//用于在循环中检查的布尔值
var boCheckinPased=假;
var PerservedPassed=假;
对于(var i=0;i

我在这里更新了一个JSFIDLE:

您可以使用jquery nextUntil()函数:

这对于你的确切问题来说是很好的,但是如果你想稍微调整一下,你应该回到愚蠢的野蛮方法:获取数组并用布尔值在其上循环

$('.test').on('click', function(e){
    //add the class to your target
    $(e.target).addClass('checkin');

    //get an array of all the .test divs in the .class div you click
    var arTests = $(e.target).parent().find('div.test');
    //if you want to loop on all the .test of the page, just go like that :
    // var arTests = $('div.test');

    //boolean to check in the loop
    var boCheckinPased = false;
    var boReservedPassed = false;

    for(var i = 0; i < arTests.length; i++) {
        if($(arTests[i]).hasClass('checkin')) boCheckinPased = true;
        if($(arTests[i]).hasClass('reserved')) boReservedPassed = true;

        //if passed the first checkin and not yet the reserved, add the class
        if(boCheckinPased && !boReservedPassed) $(arTests[i]).addClass('checkin')
    }
});
$('.test')。在('click',函数(e)上{
//将类添加到目标中
$(e.target).addClass('checkin');
//获取所单击的.class div中所有.test div的数组
var arTests=$(e.target).parent().find('div.test');
//如果要循环页面的所有.test,只需执行以下操作:
//var arTests=$('div.test');
//用于在循环中检查的布尔值
var boCheckinPased=假;
var PerservedPassed=假;
对于(var i=0;i

我确实在这里更新了一个JSFIDLE:

代码越少越好:

$('.test').on('click', function(){
    var elements = $('.class .test');
    elements.each(function(key, value) {
        if (!$(elements[key]).hasClass('reserved')) {
            $(elements[key]).addClass('checkin');       
        }
    });
});
元素:是一个对象列表

键:是每个元素在元素列表中的位置


值:对象本身是不是代码越少越好:

$('.test').on('click', function(){
    var elements = $('.class .test');
    elements.each(function(key, value) {
        if (!$(elements[key]).hasClass('reserved')) {
            $(elements[key]).addClass('checkin');       
        }
    });
});
元素:是一个对象列表

键:是每个元素在元素列表中的位置



值:对象本身是否正常?如果保留类在签入类之前,我这里的问题就出现了。在这种情况下,我需要找到下一个保留类而不是先前的保留类…我不知道这将如何将该类添加到所有元素中,直到某一点?如果保留类在签入类之前,我这里的问题就出现了在这种情况下,我需要找到下一个保留的而不是上一个保留的…我不知道这将如何将类添加到所有元素中,直到某一点?没有嵌套的
.test
divs。checkin和.reserved
之间的
是什么意思?.test div嵌套在.class div中?checkin类是在单击后添加的…您应该澄清这个问题…没有嵌套的
.test
divs。签入和.reserved
之间的
是什么意思?.test div嵌套在.class div中?签入类是在单击时添加的…应该澄清这个问题…您还希望每个其他父类中都有同级吗?是的,直到它到达下一个Decentant保留div,或者如果保留div在End之前不存在,您还希望每个其他父节点中都有兄弟节点?是的,直到它到达下一个Decentant保留div,或者如果保留div在endOk之前不存在,这是完美的,直到保留在签入不存在之前,那么它会失败…啊,我明白了,我回家后会查出来的,我得走了好吧,这是完美的,直到预订在不存在的情况下签入之前,然后它就失败了…啊,我明白了,我回家后会查出来的,我得走了