2016-10-02 21 views
0

我在頁面上使用Icegram(「退出意圖」模式彈出式插件)。我們在頁面上有點擊通話鏈接,問題在於,無論何時有人點擊通話,瀏覽器都會將其視爲離開頁面,因此我們的退出意圖彈出窗口顯示,而人們嘗試撥打電話,這絕對不是我們想要的。Jquery:addClass添加頁面時不存在的動態元素

所以,我嘗試添加一個jQuery函數來調用鏈接,就像這樣:

<style> 
.hide-icegram {display:none !important} 
</style> 

<a href="tel:8888888888" class="clicktocall">8888888888</a> 

<div class="icegram-popup"></div> <!--div inserted dynamically by icegram's script--> 

<script> 
jQuery(".clicktocall").click(function() { 
jQuery(".icegram-popup").addClass("hide-icegram"); 
}); 
</script> 

但無論我做什麼,「隱藏-icegram」類不應用到icegram彈出,所以它保持可見。

我注意到<div class="icegram-popup">只有在它被激活時才被插入到頁面中。所以我想知道如果addClass不工作,因爲它正在尋找「icegram-popup」div,但它不存在於頁面加載,所以也許這是問題?

我只想讓「hide-icegram」類適用於<div class="icegram-popup">任何時候有人點擊通話鏈接。有任何想法嗎?

+0

您需要使用委託事件處理程序,因爲'.icegram-popup'元素在頁面加載後被添加到DOM。請參閱我標記爲重複的問題,以便更全面地解釋問題及其解決方案。 –

回答

1

如果帶有icegram-popup類的元素是動態插入的,那麼當然,腳本無法識別它是否被載入。

嘗試事件委派:

$("body").on("click", ".clicktocall", function() { 
    $(".icegram-popup").addClass("hide-icegram"); 
}); 

jQuery將來自body開始,尋找一個.clicktocall委託上點擊的事件。

+0

'.clicktocall'不是一個動態插入的元素。 –

+1

那麼這可能意味着什麼? *僅在激活時插入頁面»* –

+0

點擊'clicktocall'時,DOM中可能無法使用'icegram-popup'。 –