2013-08-02 52 views
0

我有這似乎與谷歌Chrome瀏覽器的Web開發工具查看時產生正確的HTML如下:試圖捕捉的錨標記上的點擊事件

$("<a />", { 
    text: "link text goes here" 
}).attr({ 
    href: "#", 
    class: "some_class_name", 
    id: "divSlot-" + data.id 
}).appendTo("#divSlots"); 

我試圖點擊事件添加到標籤:

$(".some_class_name").on("click", function(event) { 
    event.preventDefault(); 
    alert("hello"); 
}); 

當我點擊瀏覽器中的鏈接時,沒有任何反應,甚至沒有發生錯誤。

我做錯了什麼或錯過了什麼?

回答

3

您需要使用基於事件委託的事件註冊,因爲您正在處理動態添加的元素。

.on(),您使用的是僅適用於$(".some_class_name").click(...)手短,儘量使用你需要使用的.on()

$(document).on("click", ".some_class_name", function(event) { 
    event.preventDefault(); 
    alert("hello"); 
}); 
+0

這是問題所在,謝謝。 – oshirowanen

0

不同的語法,你可以添加它產生的HTML輸出事件代表團?

起初看起來沒有什麼看起來不對。你可以更有效地改變你的代碼:

$(".some_class_name").click(function(event) { 
    event.preventDefault(); 
    alert("hello"); 
}); 
0

使用事件代表團

$("document").on("click",".some_class_name", function(event) { 
    event.preventDefault(); 
    alert("hello"); 
}); 
0

試試以下(我只是改變data.id和正常工作)

$("<a />", { 
    text: "link text goes here" 
}).attr({ 
    href: "#", 
    class: "some_class_name", 
    id: "divSlot-21" 
}).appendTo("#divSlots"); 

$(".some_class_name").on("click", function(event) { 
    event.preventDefault(); 
    alert("hello"); 
}); 

工作示例這裏:http://jsfiddle.net/SF6pN/

希望它幫助。