防止jquery事件运行两次

时间:2012-10-24 14:34:41

标签: jquery

我有点击事件(见下文)。我遇到的问题是我触发它但targ.hide('slow')事件是异步的,所以我能够在第一个targ.hide('slow')仍在运行时再次触发事件。我已设法用旗帜解决问题但是想知道是否有更好的方法来阻止它?提前谢谢。

var flag = false;
$('div.titlebar div.re.b1 div.r .sides').delegate('.close', 'click', function (e)
{
    if (!flag)
    {
        flag = true;
        var cnt = $('table.sides tbody tr > td').length;
        var targ = $(this).closest('td');
        var side = $(this).parent('div[itemprop]').attr('itemprop');

        if (cnt > 1)
        {
            targ.hide('slow', function () { targ.remove(); LoadSides(dkey); flag = false; });
            updatesidedel(side, true);
        }
    }
    e.stopPropagation();
});

2 个答案:

答案 0 :(得分:4)

您可以使用:animated检查td是否仍在设置动画。

if( $('td:animated').length > 0 ) 

答案 1 :(得分:1)

您应尝试使用此jquery's :selector来查看您的商品目前是否已设为动画。