簡體   English   中英

將元素添加到DOM后,jQuery.click無法正常工作

[英]jQuery.click not working after adding element to the DOM

我有一個簡單的jQuery('div#star')。點擊(功能。

最初加載DOM時,該函數會運行一次,但稍后我會在DOM中添加div#star,此時click函數不起作用。

我正在使用jQuery 1.4.4,據我所知,我不再需要使用.live或.bind了。 DOM中任何時候都不會有多個div#star。 我嘗試從id =“star”更改為class =“star”,但這沒有幫助。

關於如何使這個工作或為什么它不工作的任何建議?

我在jQuery(文檔).ready中有.click,並且在外部js文件中,並且在將div添加到DOM之后都不起作用。

這適用於jQuery 2.0.3

$(document).on('click', '#myDiv', function() {
    myFunc();
});

從jQuery 1.7開始,不推薦使用.live()方法。 目前的建議是使用.on() ,它提供了覆蓋事先處理程序的先前方法的所有功能。 簡而言之,您不必再決定,因為on()可以做到這一切。

幫助中提供了文檔,用於轉換舊的jQuery事件方法.bind() ,. delegate().live()

您仍然需要使用直播活動。

http://api.jquery.com/live/

嘗試
.on('event', 'element', function(){ //code })

你需要在這里使用livedelegate 自jQuery 1.4.4以來,這個部門沒有任何變化。

試着這樣想: clickbind將事件附加到元素本身,所以當元素消失時,關於事件的所有信息也會這樣做。 live在文檔級別附加事件,它包含有關要偵聽的元素和事件類型的信息。 delegate做同樣的事情,除了它將事件信息附加到你喜歡的任何父元素。

您可以使用委托來代替:

$(document).delegate('click', "selector", function() {
    //your code
});

我希望它會有所幫助。

用戶“直播”方法$("div#star").live("click", function() {});

文件

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM