JavaScript 双击元素

标签 javascript jquery

嘿伙计们..快速提问:

我编写了一个简单的 JS,当单击图像链接时,它会打开 lightBox 以查看图像。基本上,使用 jQuery(是的,我就是那么懒),我检测 anchor 标记的点击,使用正则表达式来确保 HREF 属性是图像文件,如果是,它会在 lightBox 中打开图像。一切正常,除了一件事: anchor 需要单击两次才能打开 lightBox。这是为什么?

这是我写的脚本:

    $(document).ready(function(){
    var href;
    var imageExtensions = /(.)+(.jpg)|(.png)|(.gif)|(.bmp)/;
    //On click of any link
    $("a").live("click",function(event){
        href = $(this).attr("href");
        //If the target URL is an image, use lightbox to open it
            if(imageExtensions.test(href)){
                event.preventDefault();
                $(this).attr("class","lightboxIMG");
                //Prevent the link from opening, and open lightbox
                $(".lightboxIMG").lightBox();
                $(this).attr("class","");
            }
    });
//END   
});

我不明白是什么导致用户必须单击两次才能激活 lightBox。如果您需要示例来了解我所指的内容,我目前正在我的新网站的测试版中使用该脚本:http://ctrlshiftcreate.com/photography.php?photo=6&r_folder=

点击“查看完整尺寸”即可明白我的意思。我非常感谢任何帮助 - 非常感谢!

最佳答案

认为发生的情况是 lightbox() 调用仅将 anchor 设置为灯箱,它实际上并不显示灯箱。因此,第一次点击是对灯箱说“使其成为灯箱链接”,第二次点击被灯箱捕获并实际显示灯箱。

编辑现场直播重要吗?或者,您是否计划添加更多在加载文档后需要捕获的链接?如果实时不重要,标准 lightBox() 方法应该足以捕获点击。如果是,我会考虑编写一个 hookAnchors() 样式方法,您可以在只需再次调用 lightBox() 的 ajax 之后调用该方法。像这样的东西:

$(document).ready(function() {
    hookAchors();
});

function hookAnchors() {
    var imageExtensions = /(.)+(.jpg)|(.png)|(.gif)|(.bmp)/;
    $('a')
        .filter(function() {
            return imageExtensions.test($(this).attr("href"))
        })
        .lightBox();
}

这样你就可以在 DOM 更改代码中调用 hookAnchors(例如 $.get 的结果)。

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

相关文章:

javascript - 包括特殊字符 (!,@,#,&) 不包括其他特殊字符

javascript - Chart.js 中的逗号

javascript - 将 margin-top 设置为与高度相反的动画的最佳方法是什么?

javascript - 如何在页面加载时默认显示页面

javascript - CSS - 在打印中设置当前页的结尾

javascript - setTimeout 不适用于 jquery

javascript - GreaseMonkey 脚本,不解析添加到 DOM 的链接

javascript - ZeroClipboard/zlip 在 iframe 中导致不安全的 Javascript 警告

javascript - 对于多个添加的元素,自动滚动溢出元素不会继续

jquery - 我如何使用 jQuery 处理双击事件?