delay()函数不能与jquery中的addClass()函数一起使用
delay() function does not work with addClass() function in jquery
当我在addClass()函数之前使用delay()函数时,类circle1不会延迟一段时间。
我的代码如下。。。。。。
CSS:
.but{display:block; width:40px; height:40px; background-color:#F00; position:absolute;}
.circle1{display:block; width:145px; height:145px; position:absolute; left:10px; bottom:0px; border-radius:50%; border:5px solid rgba(100%,0%,20%,0.7); background-image:url(New%20folder/1st.jpg); background-position:center; background-repeat:no-repeat; background-size:cover; transform:scale(0);}
.zoom{transform:scale(1); transition:All 0.4s ease;}
JQuery:
$(document).ready(function() {
$(".but").click(function() {
$('.but').fadeOut(300);
$('.circle1').delay(1000);
$('.circle1').addClass("zoom");
});
});
使用setTimeout,因为.delay()
被设计为与队列一起工作,而addClass()
不使用队列。
$(".but").click(function() {
$('.but').fadeOut(300);
setTimeout(function(){
$('.circle1').addClass("zoom");
}, 1000);
});
或者,您可以使用.queue
$(".but").click(function() {
$('.but').fadeOut(300);
$('.circle1').delay(100)
.queue(function() {
$(this).addClass("zoom");
$(this).dequeue();
});
});
方法1setTimeout()
$(".but").click(function() {
$('.but').fadeOut(300);
setTimeout(function(){$('.circle1').addClass("zoom")},1000);
});
方法2.queue
$(".but").click(function() {
$('.but').fadeOut(300);
$('.circle1').delay(1000).queue(function () {
$('.circle1').addClass("zoom");
});
});
.delay()
仅适用于在同一DOM对象上使用动画队列的jQuery方法。因此,由于.addClass()
不使用动画队列,因此它不与.delay()
协作。
您可以通过排队函数触发addClass()
,也可以只使用setTimeout()
。
最简单的方法可能是:
$(document).ready(function() {
$(".but").click(function() {
$('.but').fadeOut(300);
setTimeout(function() {
$('.circle1').addClass("zoom");
}, 1000);
});
});
.delay()方法在队列系统的帮助下工作,因此它会延迟下一个队列中下一个方法的执行(默认队列是fx
队列)。addClass
方法不使用队列执行,这就是它不起作用的原因。
您可以使用类似的queue()方法添加一个函数,将类添加到队列的目标元素
$(document).ready(function() {
$(".but").click(function() {
$('.but').fadeOut(300);
$('.circle1').delay(1000).queue(function() {
$('.circle1').addClass("zoom");
});
});
});
.zoom {
color: red
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<button class="but">but</button>
<div class="circle1">div</div>
相关文章:
- setTimeout可以与闭包内的函数一起使用吗
- $location.search() 与外部函数一起使用,重置整个$scope.如何避免它
- 将 JSDoc 与匿名对象和该对象的函数一起使用的正确方法
- While循环与jquery中的某些数学函数一起崩溃
- 如何将setTimeout()与slow函数一起使用
- 此JavaScript函数可以单独使用,但不能与其他JavaScript函数一起使用
- delay()函数不能与jquery中的addClass()函数一起使用
- 如何将URL与JQuery.getJSON()函数一起使用
- .wrap()在与resize函数一起使用时多次添加选择器
- 为什么JavaScript闭包不能与预定义的函数一起使用
- Prototype.js 1.7:将collect与显式函数一起使用会返回与内联函数不同的结果,原因是什么
- JS:转义字符串末尾带有反斜杠的字符串,用于与jQuery函数一起使用
- 如何将 yield 与我自己的函数一起使用
- 如何将 ng-show 与控制器中返回 true/false 的函数一起使用
- 为什么我不能将javascript setInterval与外部文件中的函数一起使用
- 将回调函数与原型函数一起使用
- 将延迟语句与 javascript 函数一起使用
- jQuery 不与 JS 搜索函数一起使用
- 如何将setTimeout与立即调用的函数一起正确使用
- 如何让jquery.each函数与动态元素的.on('change')函数一起工作