从开始工作的时候就想着要写博客,但因为一些原因未能去实行。现在已经工作快两年了,然而很多东西查了一遍又一遍,总是不能记住,所以我觉得还是应该要养成写博客的良好习惯,这样不仅对增强自己的记忆,还可以帮助后来人。所以从现在开始每周至少要写两到三遍博客,呵呵,可能有点少,但慢慢来吧,相信我也可以成为一名java技术大牛,废话不多说了,现在来看看我对jquery之动态绑定事件的理解吧。
jquery是目前非常流行的js框架之一,在很多项目中都会用到jquery框架,jquery框架提供了很多事件,如click.dbclick,blur,change等,直接给jquery对象绑定这些事件时是在页面加载时绑定的,如果是动态添加的jquery对象,则不能直接绑定事件,需要使用live绑定事件
$('.clickme').live('click', function() {
alert("Live handler called.");
});
然后再添加一个新元素:
$('body').append('<div class="clickme">Another target</div>');
然后再点击新增的元素,他依然能够触发事件处理函数。
.live() 方法能对一个还没有添加进DOM的元素有效,是由于使用了事件委托:绑定在祖先元素上的事件处理函数可以对在后代上触发的事件作出回应。传递给 .live() 的事件处理函数不会绑定在元素上,而是把他作为一个特殊的事件处理函数,绑定在 DOM 树的根节点上。
因为live的性能低,在jquery1.7之后添加了on方法来代替live方法
$("body").on("click",".clickme",function(){
alert("Live handler called.");
})
而jquery1.9之后则完全删除live方法。