jQuery onclick延迟了每个tile的超时

时间:2015-01-14 17:24:36

标签: javascript jquery html css

http://codepen.io/umbriel/pen/XJMgYX

嗨,我有一个产品网格。当您单击绿色添加按钮时,我会在每个相应的网格项上显示工具提示。除非再次单击添加按钮,否则此工具提示将在3秒后自动消失,最终会重置超时。因此,可以将工具提示保持较长时间。

现在只有在一个瓷砖上才能正常工作。但是,当您转到下一个磁贴并在上一个磁贴超时期间单击“添加”按钮时,前一个磁贴的工具提示将永远保持可见,这不是预期的。我希望它也消失。

无论你点击哪个添加按钮,是否仍然按预期工作?

谢谢

$purchasePlus.on('click', function(){

var $confirmationBadge = $(this).parent().parent().parent().find('.tile__promotion');
$confirmationBadge.addClass('flip');
clearTimeout(timer);   
timer = setTimeout(function(){
    $confirmationBadge.removeClass('flip');
},1500);        


$(this).css({
    'min-width':'40px'
}).addClass('tile__animate').html('+');
var $text = $(this).siblings().find('.purchase--input');
$text.val(parseInt($text.val(), 10) + 1);
setTimeout(function() {
    $text.removeClass('focus');
}, 2000);
if($text.val() > 1) {
    $text.addClass('focus');
    $(this).siblings().find('.purchase--input').addClass('focus');
}
});

1 个答案:

答案 0 :(得分:1)

可能有更好的方法,但您可以检查当前目标是否与之前的目标相同。如果是,请清除间隔。如果不是,请将previousTarget设置为当前值:

if(e.target == previousTarget){     
    clearTimeout(timer);   
}else{
    previousTarget = e.target;
}

FIDDLE