[英]How to call a function when clicking a dynamically generated link, using jQuery?
我正在动态创建多个1个<a href="#"></a>
元素。 id
属性也是动态分配的。 就像<a href="#" id='delete"+id+"'></a>
。 ID将变得像delete01, delete02, ...
单击这些元素中的任何一个时delete01, delete02, ...
我想调用一个函数。 我只知道,
$("#someId").click(this.someFunction());
单击ID为someId
的元素时,调用此函数。
生成的HTML看起来像,
<a id="delete26" href="#" class="delete">Delete</a>
<a id="delete27" href="#" class="delete">Delete</a>
<a id="delete28" href="#" class="delete">Delete</a>
生成上述html的JavaScript代码如下所示:
html += "<a class='delete' href='#' id='delete"+post.id+"'>Delete</a>";
在这里,我的ID是动态生成的。 因此,当任何一个元素被点击时,我该如何调用函数。
有什么建议么!!!
谢谢!
最好的方法是使用.delegate()
。 此函数使用Javascript的“事件冒泡”功能,这意味着每次在元素上触发事件(例如单击,焦点,模糊,鼠标悬停)时,也会在所有该元素的父元素上触发事件。 因此,您可以使用公共祖先元素来捕获所有事件。 这样做的好处是您可以为尚不存在的事件添加处理程序。
jQuery为您自动完成了许多工作:
$('#container').delegate('a.delete', 'click', this.someFunction);
这与live()
非常相似,但我认为它的语法更好,性能略有提高。
请注意,此示例假定您的链接全部包含在具有id container
的元素container
。
您可以使用jQuery .live()
$(".delete").live("click", function() {
// take some action
return false;
});
而且,如果您要调用命名函数,则可以使用以下代码。 请注意,我没有使用()
$(".delete").live("click", this.someFunction)
您可以使用以下选择器:
$('a[id^=delete]').click(function() {
var number = this.id.match(/^delete(\d+)$/)[1];
return false;
});
使用live方法,并可能使用一个选择器作为$('a.delete')
我假设内容是通过ajax加载的,如果没有,则可以用$('a.delete')
罚款
我已经使用了很多。 我不知道这是否是最好的解决方案,但还是尝试一下:
您的JavaScript中有一个类似于以下的函数:
function doStuff(id) { alert("doing things from ID: "+id); }
然后使用您的href
执行此操作(使用“ 26”作为示例ID):
<a href="#" onclick="doStuff(26)" id="26">
可能是胡扯,但有效
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.