在jquery裡有兩個方法可以用來綁定自動追加出來的DOM對象,它們是live和delegate,事實上,這兩個方法是bind方法的一個變體,在對於固定DOM對象時,我們通常使用bind就可以了,而對象動態產生的DOM對象,使用bind就無能為力了,這時live和delegate就出場了,呵呵。
live方法,用來綁定某個(某類別)對象,為它們綁定方法
複製代碼代碼如下:
//live
$("td").live("click", function () {
alert($(this).html());
});
//下面也是可以的$("#list td").live("click", function () {
alert($(this).html());
});
delegate方法,用來綁定某個(某一類)對像下的子對象,為子對象綁定方法(委託子對象,讓子對像有某種方法,呵呵)
複製代碼代碼如下:
$("#list").delegate("td", "click", function () {
alert($(this).html());
});
下面的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'); //igm是指分別用來指定區分大小寫的匹配、全域匹配和多行匹配。
$(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">
<tbody>
</tbody>
</table>
</body>
</html>