jquery:将事件添加到新创建的元素

时间:2012-10-06 06:19:07

标签: jquery events

我通过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');});

在附加元素之前,这也失败了。

3 个答案:

答案 0 :(得分:8)

将其更改为:

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

为了添加jQuery .click()处理程序,您需要一个可以调用.click()方法的jQuery对象。你的代码试图这样做:

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

这显然不起作用,因为字符串上没有click方法。相反,您需要通过在其上调用$()将该HTML字符串转换为实际的jQuery对象。

答案 1 :(得分:3)

在.clickme添加到dom之前或之后的任何地方定义。您需要确定的是“正文”或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 );

答案 2 :(得分:1)

你所拥有的陈述只会创造一个刺痛而不是元素。我想你错过了把新创建的元素添加到DOM。

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

new_ele.appendTo(someParentElement);

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