详解jquery事件delegate()的使用方法


Posted in Javascript onJanuary 25, 2016

我们先看官方是怎么说delegate()方法,delegate() 方法为指定的元素(属于被选元素的子元素)添加一个或多个事件处理程序,并规定当这些事件发生时运行的函数,使用 delegate() 方法的事件处理程序适用于当前或未来的元素(比如由脚本创建的新元素)。
语法很简单

$(selector).delegate(childSelector,event,data,function)

参数说明

  • childSelector 必需。规定要附加事件处理程序的一个或多个子元素。
  • event 必需。规定附加到元素的一个或多个事件。
  • 由空格分隔多个事件值。必须是有效的事件。
  • data 可选。规定传递到函数的额外数据。
  • function 必需。规定当事件发生时运行的函数。

delegate 的函数是被某一类型的共同父元素调用。

listNode.delegate('.condition-remove','click',function(e){
e.preventDefault();
$(this).parents('.search-condition-item').remove();
});

完整实例(要实现的效果)

function renderSearchConditions(selectionId,conditions){var conditionsTemplate = '<div class="search-conditions-list-section">'+
'<ul class="search-conditions-list"></ul>'+
'</div>',
listNode = $(conditionsTemplate);
listItemTemplate = '<li class="search-condition-item" data-type="{conditonType}"><span>{condition}</span><a class="condition-remove" href="#">x</a></li>';
for(var key in conditions)
{
var condition = conditions[key].keyword,
conditionType = conditions[key].type,
listItemNode = $.substitute(listItemTemplate,{conditionType:conditionType,condition:condition});
listNode.append(listItemNode);
}
$(selectionId).prepend(listNode);
listNode.delegate('.condition-remove','click',function(e){
e.preventDefault();
$(this).parents('.search-condition-item').remove();

});
}

1.绑定的事务中,获取事务源,调用hide办法,并传入事务源对象:

$(document).delegate("body", "click", function(e) {
  var ev = e || window.event; // 事务
  //var target = ev.target || ev.srcElement; // 获得事务源
  hide(ev.target || ev.srcElement, true);
 });

底本用的$(window),然则IE8之前的,貌似有bug。
$(document)不好之处,页面加载完后,会触发一次...
2. hide办法中,断定该事务源是否从指定元素中发出,即事务源元素是不是指定元素的子元素或者其本身。

//子元素断定====
 if (!!window.find)HTMLElement.prototype.contains = function(B) {
  return this.compareDocumentPosition(B) - 19 > 0
 };
 function hide(dom, isClick) {
  var nn,t,_isClick = !!isClick;
  try {
   for (var n in objList) {
    nn = objList[n];
    t = nn.getOption("target")[0];
    if (_isClick && (t == dom || t.contains(dom)))return;
    if (!_isClick || !nn.box[0].contains(dom)) nn.hide();
   }
  } catch(e) {
  }
 }

3.上方的hide办法中,isClick变量 断定 是不是点击事务触发的。以便处理惩罚resize的。resize用settimeout作处理惩罚,降落内存消费。

var reTime = null;
 $(window).bind("resize", function() {
  if (reTime) clearTimeout(reTime);
  reTime = setTimeout(hide, 50);
 });

以上就是关于jquery事件delegate()的使用方法相关内容,希望对大家的学习有所帮助。

Javascript 相关文章推荐
jQuery each()小议
Mar 18 Javascript
Javascript操作URL函数修改版
Nov 07 Javascript
js焦点文字滚动效果代码分享
Aug 25 Javascript
JS实现新浪微博效果带遮罩层的弹出框代码
Oct 12 Javascript
JavaScript代码轻松实现网页内容禁止复制(代码简单)
Oct 23 Javascript
js实现的彩色方块飞舞奇幻效果
Jan 27 Javascript
Bootstrap每天必学之导航组件
Apr 25 Javascript
jQuery实现节点的追加、替换、删除、复制功能示例
Jul 11 jQuery
json字符串传到前台input的方法
Aug 06 Javascript
对angularJs中ng-style动态改变样式的实例讲解
Sep 30 Javascript
Vue使用watch监听一个对象中的属性的实现方法
May 10 Javascript
在Vue中使用CSS3实现内容无缝滚动的示例代码
Nov 27 Vue.js
AngularJS中的Directive实现延迟加载
Jan 25 #Javascript
AngularJS中的Directive自定义一个表格
Jan 25 #Javascript
理解JavaScript事件对象
Jan 25 #Javascript
AngularJS中如何使用$parse或$eval在运行时对Scope变量赋值
Jan 25 #Javascript
学习JavaScript事件流和事件处理程序
Jan 25 #Javascript
javascript产生随机数方法汇总
Jan 25 #Javascript
在AngularJS中如何使用谷歌地图把当前位置显示出来
Jan 25 #Javascript
You might like
php输入流php://input使用示例(php发送图片流到服务器)
2013/12/25 PHP
php unlink()函数使用教程
2018/07/12 PHP
PHP实现基于状态的责任链审批模式详解
2019/05/31 PHP
Opacity.js
2007/01/22 Javascript
一个javascript参数的小问题
2008/03/02 Javascript
JavaScript 解析读取XML文档 实例代码
2009/07/07 Javascript
javascript instanceof 与typeof使用说明
2010/01/11 Javascript
js中事件的处理与浏览器对象示例介绍
2013/11/29 Javascript
js实现全屏漂浮广告移入光标停止移动
2013/12/02 Javascript
原生JS封装Ajax插件(同域、jsonp跨域)
2016/05/03 Javascript
AngularJS基础 ng-keydown 指令简单示例
2016/08/02 Javascript
ES6中Generator与异步操作实例分析
2017/03/31 Javascript
JS简单生成随机数(随机密码)的方法
2017/05/11 Javascript
React组件之间的通信的实例代码
2017/06/27 Javascript
jquery实现一个全局计时器(商城可用)
2017/06/30 jQuery
JS原生带缩略图的图片切换效果
2018/10/10 Javascript
js实现视图和数据双向绑定的方法分析
2020/02/05 Javascript
vue.js中使用微信扫一扫解决invalid signature问题(完美解决)
2020/04/11 Javascript
关于你不想知道的所有Python3 unicode特性
2014/11/28 Python
使用IPython来操作Docker容器的入门指引
2015/04/08 Python
python实现类的静态变量用法实例
2015/05/08 Python
Python中type的构造函数参数含义说明
2015/06/21 Python
python解决汉字编码问题:Unicode Decode Error
2017/01/19 Python
python矩阵转换为一维数组的实例
2018/06/05 Python
Python pygame绘制文字制作滚动文字过程解析
2019/12/12 Python
一文了解python 3 字符串格式化 F-string 用法
2020/03/04 Python
python PyAUtoGUI库实现自动化控制鼠标键盘
2020/09/09 Python
应届毕业生专业个人求职自荐信格式
2013/11/20 职场文书
学生个人自我鉴定
2014/03/26 职场文书
中文专业自荐书
2014/06/29 职场文书
停车场管理协议书范本
2014/10/08 职场文书
买房协议书范本
2014/10/23 职场文书
作文评语怎么写
2014/12/25 职场文书
学校党员干部承诺书
2015/05/04 职场文书
Python的这些库,你知道多少?
2021/06/09 Python
Vue监视数据的原理详解
2022/02/24 Vue.js