我通过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');});
在附加元素之前,这也失败了。
答案 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');});