如何在淡入淡出回调中重新点击事件?

时间:2014-10-11 21:25:16

标签: jquery

尝试在这里做一些相当简单的事情。我将点击事件设置为几个锚点,如代码中所描绘的那样。在click事件函数中,我有一个带回调函数的淡出。我想防止锚点开始直到淡出完成,然后重新开火。这是我到目前为止所收集的......但是没有用。我得到了淡入淡出,然后没有任何反应。

$('#desktop_nav ul').find('a').click(function(e)
{       
    var that = this;
    //console.log(that);

    // prevent fade from firing on mid-click
    if (e.which != 2)
    {           
        e.preventDefault();

        $('html').fadeOut(2000, function(){
            //console.log(that);
            that.bind('click', function(){
                $(this).trigger('click');
                // returns "Uncaught TypeError: undefined is not a function"
            });
        });
    }
});

正在通过Stack寻找答案,但看起来我缺乏一些知识来完全理解这些答案。

谢谢!

2 个答案:

答案 0 :(得分:2)

that引用原始DOM元素(,因为您使用var that = this 设置

您需要使用$(that).bind(...)


绑定一个处理程序的逻辑虽然点击它会触发对它自身的点击但是有缺陷,因为它会创建一个无限循环或触发它自己。

您需要在淡入淡出完成时手动触发click

    $('html').fadeOut(2000, function(){
        //console.log(that);
        $(that).trigger('click');
    });

尝试

    $('html').fadeOut(2000, function(){
        //console.log(that);
        window.location.href = that.href;
    });

答案 1 :(得分:1)

好的,这很好用!

$('#desktop_nav ul').find('a').click(function(e)
{
    var that = this;

    // prevent fade from firing on mid-click
    if (e.which != 2)
    {           
        e.preventDefault();

        $('html').fadeOut(2000, function(){
            window.location.href = that.href;
        });
    }
});