jquery – 回调函数的启动过早

前端之家收集整理的这篇文章主要介绍了jquery – 回调函数的启动过早前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在jQuery中有这个简单的功能
function detailspage(page) {

  if (page != checkcurrent) {

    checkcurrent = page;

    $('div#details').children("div").slideUp("slow",function() {

        $('div#details').children("div"+page).slideDown("slow");

    });

  };

};

我已经把三个÷>的内部放在另一个< div>被称为< div id =“details”>并且它们都被默认地滑出并且不在视线内.我现在希望让他们每个人滑下来,当他们中的每个按钮被点击.当然,< div>这是开放的,必须首先在新的一轮下滑之前,才能被摆脱视线.这就是为什么我已经尝试过这个简单的回调函数.

(页面变量包含一个div的id,如#info或#cast_crew.)

但它不工作:You can see the error by clicking the three buttons on the left in the bottom of the page,named “Cast & crew”,“Info” and “Galleri”.

除了似乎没有造成任何延迟的回调函数之外,这一切都起作用.回调没有效果.当当前框的幻灯片完成时,我只想要新框的开始.

哪里不对?为什么我的回调不工作?

谢谢.

解决方法

我将看看jquery中的promise函数,以确保所有元素都完成了动画: http://api.jquery.com/promise/

例如:

function detailspage(page) {
    if (page != checkcurrent) {
        // so we only have to search the dom once
        var details = $('div#details');
        checkcurrent = page;
        details.children("div").slideUp("slow").promise().done(
            function() {
                $('div' + page).slideDown("slow");
            });
    };
};

工作实例:http://jsfiddle.net/cm3pv/6/

猜你在找的jQuery相关文章