2013-02-12 60 views
3

我在使用jQuery按下提交按鈕時將h1標記添加到我的文檔中。我想在稍後的時間與這個h1標籤交互(用鼠標點擊),所以我需要爲它添加一個事件處理程序。但是,它似乎沒有註冊點擊。事件監聽器無法動態添加元素

我以前見過這個問題,他們都說使用.on(),我有,但仍然沒有運氣。我也沒有收到任何錯誤,所以不知道從哪裏開始。

下面是它的一個非常簡化版本的jsFiddle。謝謝。

$("h1").on("click", function(){ 
    alert("test"); 
    $("h1").css("color","red"); 
}) 
+0

@dystroy是有點快,但這裏的工作小提琴:HTTP://的jsfiddle。 net/fXVeW/1/ – 2013-02-12 20:39:01

+0

非常感謝 – Lars 2013-02-12 20:40:30

回答

13

使用此:

$(document.body).on("click", "h1", function(){ 
    alert("test"); 
    $("h1").css("color","red"); 
}) 

jQuery的設定必須包含,當你調用它的on,將包含h1的元素。你可以用document.body替換你確定h1的任何元素。

旁註:

你確定你不想$(this).css("color","red");,而不是$("h1").css("color","red");?使用$(this)會改變點擊的h1的顏色,而不是全部改變h1

+0

這不會出現在文檔中。我只是重新閱讀它。它講述了使用他的方法添加的聽衆的數量,但沒有說這是錯誤的。還是我讀錯了。他的方法不應該仍然有效嗎? – Leeish 2013-02-12 20:41:24

+0

@Leeish否:接收者(必須位於您調用的jquery集中)通過動態查找驗證選擇器(此處爲「h1」)的元素來委派事件。 – 2013-02-12 20:44:04

+0

你確定你不想要$(this).css(「color」,「red」) - 這是一個很好的建議,謝謝。 – Lars 2013-02-12 20:49:15

-1

試試這個

JS代碼

$(document.body).on("click", "h1", function(){ 
    alert("test"); 
    $(this).css("color","red"); 
}); 

LIVE DEMO