JS~delegate與live


在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="http://common.cnblogs.com/script/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>

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM