jquery中的delegate函数有什么作用
1个回答
展开全部
$("p").delegate("body", "click", function(){
alert("P元素的CLICK事件!");
});
这个代码的意思是向Body元素下面的已有P元素以及未来被添加到body的P元素添加click事件。
$("body").append("<p>后追加的p元素</p>");
此时这个被添加的p元素也会被绑定上之前代码上的那个click事件,不必再手动绑定。
但是本人并不推荐用delegate的方式给元素绑定事件处理函数,他的原理是在body(参数第一个传的是啥就是啥)绑定click(第二个参数传的是啥就是啥)事件
,然后判定触发当前click的事件是否符合当前绑定的选择器(即代码示例中的$("p")),如果符合,再回调你的click函数。也就是说这个方式绑定的click事件并非是直接绑定到p(代码写的是啥就是啥)元素上的,而是body上的,性能差,一旦用这种方式给10种dom绑定click事件,那么他肯定会有一个队列保存这10种选择器,当你触发一个click事件时会用一个循环去判断是否满足这10种dom中的具体哪一种而后再回调具体的事件处理函数。而且还有个问题就是他有些事件并不支持这样绑定。所以除了万不得已不推荐这样写。
alert("P元素的CLICK事件!");
});
这个代码的意思是向Body元素下面的已有P元素以及未来被添加到body的P元素添加click事件。
$("body").append("<p>后追加的p元素</p>");
此时这个被添加的p元素也会被绑定上之前代码上的那个click事件,不必再手动绑定。
但是本人并不推荐用delegate的方式给元素绑定事件处理函数,他的原理是在body(参数第一个传的是啥就是啥)绑定click(第二个参数传的是啥就是啥)事件
,然后判定触发当前click的事件是否符合当前绑定的选择器(即代码示例中的$("p")),如果符合,再回调你的click函数。也就是说这个方式绑定的click事件并非是直接绑定到p(代码写的是啥就是啥)元素上的,而是body上的,性能差,一旦用这种方式给10种dom绑定click事件,那么他肯定会有一个队列保存这10种选择器,当你触发一个click事件时会用一个循环去判断是否满足这10种dom中的具体哪一种而后再回调具体的事件处理函数。而且还有个问题就是他有些事件并不支持这样绑定。所以除了万不得已不推荐这样写。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询