双击元素

时间:2012-11-10 14:45:32

标签: javascript jquery click

我制作一个剧本。这会在img标记中加载新图像。这是脚本:

button.click(function(e) {
    e.preventDefault();

    var url = $(this).attr("href");
    var img = $('#photo-gallery .teaser img');

    $('li', list).attr('data-flag', 'close');

    img.animate({ opacity: 0 }, 500, function() {
        $('img', teaser).attr("src", url);
    });

    img.animate({ opacity: 1 }, 500)

    $(this).closest('li').attr('data-flag', 'open');
});

但是,我对这个脚本有疑问。单击快速按钮时。如果你很快接续点击。比单击事件的脚本要多。我该如何解决这个问题。

2 个答案:

答案 0 :(得分:1)

使用标记将其设置为true as soon as the event execution starts并在exectuion结束时将其设置为false。 如果在alreadClicked标志为true时触发了其他事件,则从事件返回而不采取任何操作

alreadClicked = false;

button.click(function(e) {      

    if(alreadClicked)
         return; 

    alreadClicked = true;
    e.preventDefault();
    var url = $(this).attr("href");
    var img = $('#photo-gallery .teaser img');

    $('li', list).attr('data-flag', 'close');

    img.animate({ opacity: 0 }, 500, function() {
        $('img', teaser).attr("src", url);
    });

    img.animate({ opacity: 1 }, 500)

    $(this).closest('li').attr('data-flag', 'open');
    alreadClicked = false;
});

答案 1 :(得分:0)

JQuery one允许仅执行一次事件

button.one("click", function(e) {
    /* code ... */
});