jQuery中live与delegate方法处理动态DOM的对比

作者:流萤

时间:2026-10-27

浏览:313

本文解析jQuery中用于处理动态生成DOM对象的live和delegate方法。两者均为bind的变体,适用于固定DOM无法覆盖的场景。通过对比示例代码,说明live直接绑定元素与delegate指定父级子元素的差异,并提供完整HTML实现方案。

文章目录

动态DOM绑定方法概述

在jQuery库中,存在两种用于绑定动态追加DOM对象的方法:live和delegate。实际上,这两种方法都是bind方法的变体。对于固定的DOM对象,通常直接使用bind即可;但当面对动态产生的DOM对象时,bind方法便无法发挥作用,此时live和delegate方法便派上了用场。

live方法绑定示例

live方法用于为特定(或某类)对象绑定事件处理方法。

代码如下:

//live
$("td").live("click", function () {
alert($(this).html());
            });
//下面也是可以的 $("#list td").live("click", function () {
alert($(this).html());
           });

delegate方法绑定示例

delegate方法用于为特定对象下的子对象绑定事件,即通过委托子对象来执行某种方法。

代码如下:

$("#list").delegate("td", "click", function () {
alert($(this).html());
            });

完整DEMO实现

下面的DEMO完整代码:

代码如下:

<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title></title>
<script src="jquery.js" type="text/javascript"></script>
<script id="listTemplate" type="text/html">
<tr>
<td>[UserID]</td>
<td>[UserImg]</td>
<td>[UserName]</td>
</tr>
</script>
<script type="text/javascript">
var reg = new RegExp("\\[([^\\[\\]]*?)\\]", 'igm'); //i g m是指分别用于指定区分大小写的匹配、全局匹配和多行匹配。
$(function () {
 //live
 $("#list td").live("click", function () {
 alert($(this).html());
 });
$("#addFun").click(function () {
 var html = document.getElementById("listTemplate").innerHTML;
 var source = html.replace(reg, function (node, key) { return { 'UserImg': '1', 'UserName': 'zhang', 'UserID': '1' }[key]; });
 $("#list").append(source);
 });
});
 </script>
</head>
<body>
 <div id="comment_ul_2">
 </div>
 <input type="button" id="addFun" value="click me" />
 <table id="list" border="1">
 <tbody>
 </tbody>
 </table>
</body>
</html>

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章