【问题标题】:Firefox won't fire click eventFirefox 不会触发点击事件
【发布时间】:2015-12-19 04:25:12
【问题描述】:

我遇到了一个只有 firefox 的问题(脚本在 chrome、opera、safari 甚至 edge 中运行良好)。

问题: 在 div 容器中有一个带有 a-tag 的下载按钮。现在我希望点击 div 容器指向另一个 href 而不是下载按钮。

了解盒子的概念:

<div class="imacontainer>
___________________________________
|.download-lightbox               |
|                                 |
|                                 |
|                                 |
|          [DL-BTN]               |
|                                 |
|                                 |
|                                 |
|                                 |
|                                 |
|_________________________________|
    <h3><a href="link">title</a></h3>
</div>

我写的解决方法是这样的:

$("imacontainer").click(function(e){
    if(e.toElement.className == "download-lightbox") {
        e.preventDefault();
            var target = $(this).children("h3").children("a").attr("href");
            window.location.href = target;
    }
});

任何想法为什么这仅在 Firefox 中不起作用?

【问题讨论】:

    标签: javascript jquery firefox


    【解决方案1】:

    尝试使用 e.target

    if($(e.target).hasClass("download-lightbox")) {
    

    【讨论】:

    • thx,合并解决方案我想出了这个解决方案:var toElem = e.relatedTarget || e.toElement || e.target;
    【解决方案2】:

    您的代码在 IE 中应该可以正常工作,但其他浏览器可能会在使用事件对象的 toElement 属性时遇到问题,该属性是 IE 特定的属性,因此您需要首先检查哪个属性可用,如你的代码

     $("imacontainer").click(function(e){
    
         var toElem =  e.relatedTarget || e.toElement;
    
            if(toElem.className == "download-lightbox") {
                e.preventDefault();
                    var target = $(this).children("h3").children("a").attr("href");
                    window.location.href = target;
            }
        });
    

    注意 - 我实际上并没有在所有浏览器中尝试过你的代码,我只是让你知道如何处理跨浏览器

    【讨论】:

      猜你喜欢
      • 2016-10-21
      • 2020-12-27
      • 1970-01-01
      • 2013-05-19
      • 1970-01-01
      • 1970-01-01
      • 2018-04-18
      • 1970-01-01
      相关资源
      最近更新 更多