jquery动态节点绑定事件怎么实现?

发布时间:2020-04-05编辑:脚本学堂
有关jquery为动态创建的节点绑定事件的方法,jquery中使用live方法为动态节点绑定事件,不了解的朋友参考下。

一、jquery如何为动态创建的节点绑定事件?

例子:
 

$("#table").append("<a href='javascript:;' class='del'>删除</a>");
$(".del").click(function(){
   alert("获取到拉");
})

以上代码不起作用,可以修改为:
 

$("#table").append("<a href='javascript:;' class='del'>删除</a>");
$(".del").live("click", function(){
alert("获取到了");
});

二、jquery 为动态添加的元素绑定事件处理函数

对于页面中动态添加的元素,由于是在页面加载完成后添加的,因此页面加载时无法给其绑定事件处理函数。

例子:
 

$(".RemoveLink").live("click",function () {
// Get the id from the link
var recordToDelete = $(this).attr("data-id");
alert("即将删除" + recordToDelete);
if (recordToDelete != '') {
// Perform the ajax post
$.post("/BS_Parameter/Delete", { "id": recordToDelete },
function (data) {
$("#tb_row_" + data.returnID).fadeOut("slow");
$("#AddedParamet").append("<p>删除成功" + data.returnID + "</p>");
});
}
});

使用live可以实现动态元素的事件绑定:
 

function CreateTR(data) {
var myTR = "<tr id='tb_row_"+data.returnID+"'><td>" + data.name + "</td><td>" + data.description + "</td><td><a href='#' class='RemoveLink' data-id='" + data.returnID + "'>删除</a></td>";
return myTR;
}

$("#RequestParameters").append(CreateRequestTR(data));

这样添加进去的元素,便会被绑定上事件处理函数了。

三、jquery给动态添加的元素绑定事件的方法

jquery给动态添加的元素绑定事件

jquery中绑定事件一般使用bind,或者click,但是这只能是对已经加载好的元素定义事件,那些后来添加插入的元素则需要另行绑定。

在1.7版本以前使用live。但是在1.8版本以后推荐使用on。

以下介绍jQuery中如何给动态添加的元素绑定事件?

例如,为动态生成的html元素绑定触发事件:
 

<div id="testdiv">
  <ul></ul>
</div>
 

需要给<ul>里面动态添加的<li>标签添加click事件。
 
jquery 1.7版以前使用live动态绑定事件
 

$("#testdiv ul li").live("click",function(){
});

jquery 1.7版以后使用on动态绑定事件
 

$("#testdiv ul").on("click","li", function() {
     //do something here
 });