2012-10-06 37 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); 
相关问题