jQuery中delegate()方法的用法详解


Posted in Javascript onOctober 13, 2016

delegate() 方法为指定的元素(属于被选元素的子元素)添加一个或多个事件处理程序,并规定当这些事件发生时运行的函数。下面我们具体来了解一下。

语法结构:

代码如下:

$(selector).delegate(childofselector,type,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);
 }
 );
Javascript 相关文章推荐
JavaScript 字符串与数组转换函数[不用split与join]
Dec 13 Javascript
Javascript实现的鼠标经过时播放声音
May 18 Javascript
javascript字符串拼接的效率问题
Dec 25 Javascript
javascript Window及document对象详细整理
Jan 12 Javascript
js单向链表的具体实现实例
Jun 21 Javascript
jquery之超简单的div显示和隐藏特效demo(分享)
Jul 09 Javascript
js简单实现根据身份证号码识别性别年龄生日
Nov 29 Javascript
jQuery基于扩展简单实现倒计时功能的方法
May 14 Javascript
Bootstrap栅格系统学习笔记
Nov 25 Javascript
js禁止浏览器的回退事件
Apr 20 Javascript
vue组件父子间通信之综合练习(聊天室)
Nov 07 Javascript
uni-app从安装到卸载的入门教程
May 15 Javascript
炫酷的js手风琴效果
Oct 13 #Javascript
轻松搞定js表单验证
Oct 13 #Javascript
Seajs是什么及sea.js 由来,特点以及优势
Oct 13 #Javascript
使用jquery给指定的table动态添加一行、删除一行
Oct 13 #Javascript
jQuery旋转插件jqueryrotate用法详解
Oct 13 #Javascript
JS取模、取商及取整运算方法示例
Oct 13 #Javascript
JavaScript中常用的验证reg
Oct 13 #Javascript
You might like
php递归列出所有文件和目录的代码
2008/09/10 PHP
php中ftp_chdir与ftp_cdup函数用法
2014/11/18 PHP
PHP预定义变量9大超全局数组用法详解
2016/04/23 PHP
ThinkPHP防止重复提交表单的方法实例分析
2018/05/10 PHP
php将从数据库中获得的数据转换成json格式并输出的方法
2018/08/21 PHP
Js 获取当前日期时间及其它操作实现代码
2021/03/04 Javascript
JavaScript 异步调用框架 (Part 2 - 用例设计)
2009/08/03 Javascript
使用angular写一个hello world
2015/01/23 Javascript
jQuery实现简单的DIV拖动效果
2016/02/19 Javascript
JS上传组件FileUpload自定义模板的使用方法
2016/05/10 Javascript
AngularJS入门教程之ng-checked 指令详解
2016/08/01 Javascript
微信小程序实战之上拉(分页加载)效果(2)
2017/04/17 Javascript
JS回调函数基本定义与用法实例分析
2017/05/24 Javascript
vue中axios请求的封装实例代码
2019/03/23 Javascript
layui的面包屑或者表单不显示的解决方法
2019/09/05 Javascript
解决vue net :ERR_CONNECTION_REFUSED报错问题
2020/08/13 Javascript
[02:25]DOTA2英雄基础教程 生死判决瘟疫法师
2013/12/06 DOTA
[18:32]DOTA2 HEROS教学视频教你分分钟做大人-谜团
2014/06/12 DOTA
[01:01]青春无憾,一战成名——DOTA2全国高校联赛开启
2018/02/25 DOTA
[05:15]2018年度CS GO社区贡献奖-完美盛典
2018/12/16 DOTA
实例讲解Python设计模式编程之工厂方法模式的使用
2016/03/02 Python
Python 数据结构之堆栈实例代码
2017/01/22 Python
python中requests库session对象的妙用详解
2017/10/30 Python
pandas groupby 分组取每组的前几行记录方法
2018/04/20 Python
Python实现字符串匹配的KMP算法
2019/04/04 Python
Python enumerate函数遍历数据对象组合过程解析
2019/12/11 Python
tensorflow 变长序列存储实例
2020/01/20 Python
python使用PIL剪切和拼接图片
2020/03/23 Python
Python计算矩阵的和积的实例详解
2020/09/10 Python
Python使用内置函数setattr设置对象的属性值
2020/10/16 Python
美国婚戒购物网站:Anjays Designs
2017/06/28 全球购物
餐饮周年庆活动方案
2014/08/14 职场文书
教师对照四风自我剖析材料
2014/09/30 职场文书
毕业生就业推荐表自我评价
2015/03/02 职场文书
合作协议书格式范本
2016/03/21 职场文书
python获取字符串中的email
2022/03/31 Python