2012-10-06 49 views
3

我已經通過jquery添加了一個新元素。現在我想要一個函數來觸發元素被點擊。我知道這有很多答案,但他們似乎不適合我。不知道我在這裏做錯了什麼。jquery:添加事件到新創建的元素

我曾嘗試:

new_ele = "<a>click me</a>" 
new_ele.click(function() {alert('xxxx');}); 
other_ele.append(new_ele); 

的new_ele附加之前,此失敗。

我自己也嘗試(而不是上面的第二行)

new_ele.onclick = function() { alert('blah'); }; 

這追加的元素,但是當我點擊沒有任何反應。

而且

new_ele.on('click',function() {alert('ddd');}); 

元件被附加之前這也將失敗。

回答

7

將其更改爲:

new_ele = $("<a>click me</a>"); 
new_ele.click(function() {alert('xxxx');}); 
other_ele.append(new_ele); 

爲了添加一個jQuery .click()處理器,你需要一個jQuery對象,你可以調用的方法.click()。你的代碼試圖做:

"<a>click me</a>".click(function() {alert('xxxx');}); 

這顯然不會工作,因爲沒有點擊方法的字符串。相反,您需要通過調用$()來將該HTML字符串轉換爲實際的jQuery對象。

+0

工作就像一個魅力。 – user984003

1

你所擁有的說法只會造成刺痛而不是元素。我想你錯過了將新創建的元素添加到DOM。

new_ele = $("<a>click me</a>"); 

new_ele.appendTo(someParentElement); 

new_ele.on('click',function() {alert('ddd');}); 
3

在.clickme添加到dom之前或之後的任何位置定義。所有你需要確定的是'body'或DOM中已經存在的其他元素。第二個參數是一個觸發路徑。

$('body').on('click', 'a.clickme', function(e){ 
    e.preventDefault(); 
    console.log("clicked!"); 
}); 

$new_ele = $('<a href="#" class="clickme">click me</a>'); 
$("body").append($new_elem); 
相關問題