2015-11-27 48 views
0

我有一個非常簡單的一塊JavaScript代碼的,只是應該工作,當我在瀏覽器控制檯中運行它,它僅適用:腳本,在瀏覽器控制檯工作,但不是當代碼

<script> 
    $(".hopscotch-close").click(function() { 
     alert("Hi"); 
     Cookies.set("tourState", "closed") 
    }) 
</script> 

因爲它運行在控制檯我知道: 1)".hopscotch-close"是好的; 2)代碼中沒有可能阻止其運行的錯誤; 1)因爲是一個「點擊」事件我知道我沒有準備好DOM的問題(我可以放在任何地方 - 但在這種情況下,在<body>的底部; 2)我知道我沒有問題,因爲使用相同的名稱爲一類比其他的東西存在; 3)Safari和Firefox中的行爲是相同的,所以它不是瀏覽器問題。我知道如果沒有完整的代碼,這是非常困難的,但是如果有人經歷過這種情況,那麼對於可能是什麼問題可能有沒有想法。

+0

'.hopscotch-close'元素被動態追加? –

+0

在綁定點擊處理程序之前檢查'$(「。hopscotch-close」).length',如果它是0,你知道你沒有所需的元素 – drys

+0

@GuruprasadRao是的,它是,我認爲你是對的...(請參閱下面的評論) –

回答

0

從你的意見,我感覺到了element是越來越附加dynamically所以不是

$(".hopscotch-close").on('click', 

你需要使用的event-delegation作爲

$(document).on('click','.hopscotch-close',function(){ 

這將這樣的伎倆。

如果要追加.hopscotch-close到任何現有的靜態 element然後代替$(document).on('click'可以使用 $('#yourStaticElementId').on('click','.hopscotch-close',function(){ 從而提高網站性能。

相關問題