2015-10-26 163 views
1

我知道這已經在此處提出過了,因爲我記得當我第一次試圖在我的個人網站上重新創建這個效果時,閱讀了有關此主題的各種帖子。話雖如此,這次我無法爲我的生活找到這些帖子。我應該保存它們::/jQuery Click事件在Mozilla中不起作用(在Chrome中工作)

所以,我爲重複道歉,但我試圖做一個「點擊任何地方,但在這裏關閉元素覆蓋」的東西。在Chrome中運行得非常好,但在Mozilla中並不那麼多。最重要的是,我使用過的其他元素可以完美地工作(在Mozilla和Chrome中),而不是這個。

jQuery的

function closeProductOverlay() { 
    if (!$(event.target).closest('#clickControl').length) { 
     $('#productOverlay').toggle('fast', 'linear'); 
    } 
} 

HTML

<div id="productOverlay" style="display:none;" onclick="closeProductOverlay()"> 
    <div id="mobiPadding"> 
     <div id="productContainer"> 
      <div id="clickControl"> 
       <!-- This is where I populate items dynamically --> 
      </div> 
     </div> 
    </div> 
</div> 

正如我已經說過了,我申請這個概念的許多功能在整個同一個項目/網站,他們都工作得很好。我正在努力診斷這件事。

我已經嘗試了一些凌亂的「修補程序」,但它們中的任何一個都沒有按照預期方式運行。我已經得到的最接近的是,如果去掉if語句,像這樣:

jQuery的

function closeProductOverlay() { 
    $('#productOverlay').toggle('fast', 'linear'); 
} 

不過,很顯然,如果你點擊任何地方,覆蓋消失。 (即使你點擊按鈕,或試圖複製文字)。這非常煩人,並且不能按我的需要工作。

回答

2

event在Firefox和IE或Chrome中都不是全局的。

一種解決辦法是改變你的函數將事件傳遞到它:

function closeProductOverlay(event) { 

,並更改綁定:

<div id="productOverlay" style="display:none;" onclick="closeProductOverlay(event)"> 
+0

那麼這肯定做到了!多麼容易,謝謝! – perkface

相關問題