依次切换 Class
Toggle Class sequentially
我正在尝试按顺序切换 class 元素。我得到了我发现并修改后的这段代码,但只能使用 fade:
$('.desplegable').click(function() {
var lis = $(this).parent().find('.pops');
var delay = 0;
lis.each(function() {
var $li = $(this);
$li.queue('fade', function(next) {
$li.delay(delay).fadeIn(0, next);
});
$li.dequeue('fade');
delay += 100;
});
});
是否可以通过切换 class 来实现?像这样,但这里的顺序不起作用
$('.desplegable').click(function() {
var lis = $(this).parent().find('.pops');
var delay = 0;
lis.each(function() {
var $li = $(this);
$li.queue('toggle', function(next) {
$li.delay(delay).toggleClass('appear', next);
});
$li.dequeue('toggle');
delay += 100;
});
});
这是HTML
<div>
<div class="desplegable">Title</div>
<div class="pops">Element 1</div>
<div class="pops">Element 2</div>
<div class="pops">Element 3</div>
</div>
要完成您需要的操作,您可以使用 fadeToggle()
并在集合中的每个 .pops
元素上增加延迟。
这也可以扩展为在连续点击时隐藏元素时反转淡入淡出的顺序:
$('.desplegable').click(function() {
var $pops = $(this).parent().find('.pops').stop();
if ($pops.eq(0).is(':visible'))
$pops = $($pops.get().reverse());
$pops.each((i, el) => $(el).delay(100 * i).fadeToggle(300));
});
.pops { display: none; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div>
<div class="desplegable">Title</div>
<div class="pops">Element 1</div>
<div class="pops">Element 2</div>
<div class="pops">Element 3</div>
</div>
我正在尝试按顺序切换 class 元素。我得到了我发现并修改后的这段代码,但只能使用 fade:
$('.desplegable').click(function() {
var lis = $(this).parent().find('.pops');
var delay = 0;
lis.each(function() {
var $li = $(this);
$li.queue('fade', function(next) {
$li.delay(delay).fadeIn(0, next);
});
$li.dequeue('fade');
delay += 100;
});
});
是否可以通过切换 class 来实现?像这样,但这里的顺序不起作用
$('.desplegable').click(function() {
var lis = $(this).parent().find('.pops');
var delay = 0;
lis.each(function() {
var $li = $(this);
$li.queue('toggle', function(next) {
$li.delay(delay).toggleClass('appear', next);
});
$li.dequeue('toggle');
delay += 100;
});
});
这是HTML
<div>
<div class="desplegable">Title</div>
<div class="pops">Element 1</div>
<div class="pops">Element 2</div>
<div class="pops">Element 3</div>
</div>
要完成您需要的操作,您可以使用 fadeToggle()
并在集合中的每个 .pops
元素上增加延迟。
这也可以扩展为在连续点击时隐藏元素时反转淡入淡出的顺序:
$('.desplegable').click(function() {
var $pops = $(this).parent().find('.pops').stop();
if ($pops.eq(0).is(':visible'))
$pops = $($pops.get().reverse());
$pops.each((i, el) => $(el).delay(100 * i).fadeToggle(300));
});
.pops { display: none; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div>
<div class="desplegable">Title</div>
<div class="pops">Element 1</div>
<div class="pops">Element 2</div>
<div class="pops">Element 3</div>
</div>