Delay() 和 fadeOut() 不会延迟队列中的 attr()

发布于 2024-09-01 17:31:15 字数 389 浏览 5 评论 0原文

这段代码有什么问题?我试图获得这种效果: fadeOut(500)attr('class','myClass') 延迟 600 毫秒..然后 delay( 600),然后fadeIn(500)。延迟正确发生,但 attr() 没有被延迟,它在 #myDiv 仍在消失时触发! :'(

$('#myDiv').fadeOut(500)
           .delay(600)
           .attr('class','myClass')
           .delay(600)
           .fadeIn(500);  

what is wrong in this code? I'm trying to get this effect: fadeOut(500) and attr('class','myClass') delayed by 600 millisecs.. then delay(600) again, and fadeIn(500). The delays happen correctly but the attr() is not being delayed, it fires when #myDiv is still fading! :'(

$('#myDiv').fadeOut(500)
           .delay(600)
           .attr('class','myClass')
           .delay(600)
           .fadeIn(500);  

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

九局 2024-09-08 17:31:15

.delay() 仅影响动画或 fx< /code> 队列(除非您专门指定不同的队列)。请记住,链接和队列是两个截然不同的概念,链接继续使用相同的 jquery 集,但这与该集中元素上的任何事件队列完全不同。

要使 .attr() 调用受影响,您必须添加它使用 .queue() 作为对同一队列的回调,如下所示:

$('#myDiv').fadeOut(500)
           .delay(600)
           .queue(function(next) { $(this).attr('class','myClass'); next(); })
           .delay(600)
           .fadeIn(500); 

还要注意有 .addClass().removeClass().toggleClass() 方法可用,这可能会让这更干净:)

The .delay() only affects the animation or fx queue (unless you specify a different queue specifically). Keep in mind that chaining and queuing are 2 distinctly different concepts, chaining continues the use of the same jquery set, but that's a different thing entirely than any event queues on elements in that set.

To have the .attr() call affected, you have to add it as a callback to that same queue using .queue(), like this:

$('#myDiv').fadeOut(500)
           .delay(600)
           .queue(function(next) { $(this).attr('class','myClass'); next(); })
           .delay(600)
           .fadeIn(500); 

Also note there are .addClass(), .removeClass() and .toggleClass() methods available that may make this a bit cleaner :)

﹎☆浅夏丿初晴 2024-09-08 17:31:15

我们对这段代码的问题是,当您尝试执行我的不同 jquery 效果时,您必然没有使用队列函数。

例如,我们可以这样做:

$('some_element').faddeToggle(1000).delay(3000).css('some_style','value');

但如果您有更多,则应该按某种顺序排列。

我的建议是:

$('#myDiv').fadeIn(4000)
        .delay(2000);
        console.log($($('#myDiv')).attr('id'));
        $('#myDiv').attr('class','myClass')  
 $('#myDiv').fadeOut(2000)
            .delay(3000).queue(function(){
            $('#myDiv').attr('class','newClass');
            var status = $('#myDiv').attr("class"); 
            console.log(status);
          });

在这里您还可以了解如何更改类别。我希望它能帮助你

Our problem with this code is that You didn't use queue function with is neceserly when You try execute my different jquery effects.

For example we can make this :

$('some_element').faddeToggle(1000).delay(3000).css('some_style','value');

but if You have more it should be in some order.

My propositions is :

$('#myDiv').fadeIn(4000)
        .delay(2000);
        console.log($($('#myDiv')).attr('id'));
        $('#myDiv').attr('class','myClass')  
 $('#myDiv').fadeOut(2000)
            .delay(3000).queue(function(){
            $('#myDiv').attr('class','newClass');
            var status = $('#myDiv').attr("class"); 
            console.log(status);
          });

Here You have additionally how class is changed. I hope it will help You

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文