<!doctype html>
<html ng-app>
    <head>
        <script src="./jquery.js"></script>
    </head>
    <body>
        <div id="template">hello</div>
        <script type="text/javascript">
            $("#template").click(function(){alert("hello id="+$(this).attr("id"))})

            var templateClone = $("#template").clone(true);

            templateClone.attr("id", templateClone.attr("id")+"_"+1);
            
            templateClone.appendTo("body");
        </script>
    </body>
</html>

 如上实验, 第二行文字点击, 显示第二个id。

 

具体原因是, 事件被克隆, 但是事件处理函数没有被执行, 事件处理函数在clone对象的事件处理后才执行, 其中this为,触发此函数执行的对象。

见zhangxinxu解释:

http://www.zhangxinxu.com/wordpress/2012/04/js-dom%e8%87%aa%e5%ae%9a%e4%b9%89%e4%ba%8b%e4%bb%b6/

ar $ = function(el) {
    return new _$(el);    
};
var _$ = function(el) {
    this.el = el;
};
_$.prototype = {
    constructor: this,
    addEvent: function() {
        // ...
    },
    fireEvent: function() {
        // ...
    },
    removeEvent: function() {
        // ...
    }
}

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-12-23
  • 2021-10-13
  • 2021-10-24
  • 2021-12-30
  • 2022-03-11
  • 2021-10-23
猜你喜欢
  • 2021-12-14
  • 2021-10-23
  • 2021-06-29
  • 2022-01-25
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案