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之前不存在,这是完美的,直到保留在签入不存在之前,那么它会失败…啊,我明白了,我回家后会查出来的,我得走了好吧,这是完美的,直到预订在不存在的情况下签入之前,然后它就失败了…啊,我明白了,我回家后会查出来的,我得走了