2017-04-20 76 views
0
<ul> 
<li> 
<a href='javascript:;' class='close'>close</a> 
<a>openId</a> 
</li> 
</ul> 

我想在點擊a.close時刪除li元素。li是生成動態的,這意味着每次生成新的li時,我都會這樣做。點擊鼠標不能正常工作

$("a.close").unbind("click").click(function(){ 
    console.log("close click"); 
}) 

然而,預期它不工作,當我在Chrome的控制檯類型$("a.close").click(),其打印「親密單擊」不如預期,但是當我點擊鼠標的a。關閉區域,它沒有顯示任何東西,這意味着事件沒有觸發。

js的點擊功能和mouce點擊之間的區別是什麼?

+0

你們是不是要觸發或結合的Click事件? – Darlesson

+1

您的代碼在非靜態環境中工作(https://jsfiddle.net/tj53zxx4/),這意味着問題出在您如何以及何時運行上面的'unbind()'/'click()'方法。無論如何,這是相當多餘的,因爲您可以通過在動態內容上使用委託事件處理程序來更有效地解決問題。關閉作爲一個愚蠢。 –

回答

0

當你綁定任何event任何HTML元素它會正常工作......但一旦你從DOM刪除元素並重新添加同一元素到您需要再次爲新添加的元素綁定click事件DOM。所以它變得很難...而不是這個..你可以只需register點擊事件(如下),那麼不需要再次綁定事件...任何新添加的HTML元素也會得到相同的事件...

注意: -請注意,應該匹配的元素(本例中爲a.close)在綁定時不需要存在(因此它也適用於動態添加的元素)。

你只需要註冊,如下點擊事件......

$('body').on("a.close","click",function(){ 
     alert('click event fired !') 
}); 
+0

爲什麼重視身體? – Charlie

+0

@teek - 請檢查以上答案 – prog1011