javascript双击问题

标签 javascript jquery double-click

我有一个幻灯片,其中包含指向特定幻灯片的快速链接。然后幻灯片从该点继续。问题是如果我双击一个快速链接 - 当幻灯片继续播放时它会跳过一张幻灯片(如果我三次单击它会跳过 2)。

我认为这实际上是在函数运行时再次单击导致问题的问题,因为您可以通过在函数运行时快速单击其他链接来实现相同的问题。

这是我的代码...

var images=new Array();
var locationToRevealCount=6;
var nextimage=2;
var t;
var doubleclick;

addIcons();

function addIcons() {
    while (locationToRevealCount>0) {
        $("#extraImageButtons").append('<img class="galleryButtons" src="http://www.steveszone.co.uk/images/button_sets/pink_square_button1n.png" alt="'+locationToRevealCount+'" />');
        images[locationToRevealCount]='http://www.tombrennand.net/'+locationToRevealCount+'a.jpg';
        locationToRevealCount--;
    };
    $('.homeLeadContent').prepend('<img class="backgroundImage" src="http://www.tombrennand.net/1a.jpg" />');
    $("#extraImageButtons img.galleryButtons[alt*='1']").attr("src","http://www.steveszone.co.uk/images/button_sets/black_square_button1n.png");
    runSlides();
}

function runSlides() {
    clearTimeout(t);
    t = setTimeout(doSlideshow,3000);
}

function doSlideshow() {
    if($('.backgroundImage').length!=0)
        $('.backgroundImage').fadeOut(500,function() {
            $('.backgroundImage').remove();
            slideshowFadeIn();
        });
    else
        slideshowFadeIn();
}

function slideshowFadeIn() {
    if(nextimage>=images.length) 
        nextimage=1;

    $("#extraImageButtons img.galleryButtons").attr("src","http://www.steveszone.co.uk/images/button_sets/pink_square_button1n.png");
    $("#extraImageButtons img.galleryButtons[alt*='"+nextimage+"']").attr("src","http://www.steveszone.co.uk/images/button_sets/black_square_button1n.png");

    $('.homeLeadContent').prepend($('<img class="backgroundImage" src="'+images[nextimage]+'" style="display:none;">').fadeIn(500,function() {
        nextimage++;
        runSlides();

    }));
}

$("#extraImageButtons img.galleryButtons").live('click', function() {
    nextimage=$(this).attr("alt");
    $("#extraImageButtons img.galleryButtons").attr("src","http://www.steveszone.co.uk/images/button_sets/pink_square_button1n.png");
    $(this).attr("src","http://www.steveszone.co.uk/images/button_sets/black_square_button1n.png");
    clearTimeout(t);
    doSlideshow();
});

...

<div class="homeLeadContent" style="width:965px;"></div>

<div id="extraImageButtons"></div>

最佳答案

双击仍然会触发两个单击事件……好吧,几乎一直都是,这取决于浏览器(参见:Javascript Madness: Mouse Events)。这就是为什么大多数人建议实现单击事件或双击事件而不是同时实现两者的原因。

如果您想同时检测双击,您需要对彼此接近的点击事件进行计时,并防止第二次点击,恢复第一次点击事件,并改为调用双击事件。

听起来您实际上并不需要双击?只是能够在单击幻灯片链接时切换到该幻灯片而不是转发到下一张幻灯片?

关于javascript双击问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5489338/

相关文章:

javascript - Socket.io-client 触发重复的 'reconnect_failed' 事件

javascript - Flex slider - 我想在调整浏览器大小时计算轮播的最小和最大项目数

java - 在java中双击鼠标事件

excel - 双击复制单元格并自动粘贴到另一张纸上的不同单元格

javascript - AngularJS 1.5 组件使用模板 url 将数据绑定(bind)到 Controller 和 View

javascript - 标签与输入框间距

javascript - Jquery拖放改变div内容

javascript - jQuery 在 AJAX 响应后找不到元素(或更新类)

android - 如何为gridview项目实现双击

javascript - 如何通过node_redis创建队列