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 相关文章推荐
jquery实现页面图片等比例放大缩小功能
Feb 12 Javascript
jquery遍历checkbox的注意事项说明
Feb 21 Javascript
js实现改进的仿蓝色论坛导航菜单效果代码
Sep 06 Javascript
javascript实现九宫格相加数值相等
May 28 Javascript
Google 地图类型详解及示例代码
Aug 06 Javascript
Spring shiro + bootstrap + jquery.validate 实现登录、注册功能
Jun 02 jQuery
基于EasyUI的基础之上实现树形功能菜单
Jun 28 Javascript
vue实现word,pdf文件的导出功能
Jul 31 Javascript
javascript实现手动点赞效果
Apr 09 Javascript
详解Vue3.0 前的 TypeScript 最佳入门实践
Jun 18 Javascript
配置node服务器并且链接微信公众号接口配置步骤详解
Jun 21 Javascript
vue使用keep-alive实现组件切换时保存原组件数据方法
Oct 30 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
thinkPHP3.2.3结合Laypage实现的分页功能示例
2018/05/28 PHP
Yii2框架控制器、路由、Url生成操作示例
2019/05/27 PHP
Laravel自定义 封装便捷返回Json数据格式的引用方法
2019/09/29 PHP
JQuery 学习笔记 element属性控制
2009/07/23 Javascript
jQuery第三课 修改元素属性及内容的代码
2010/03/14 Javascript
JS分割字符串并放入数组的函数
2011/07/04 Javascript
Bootstrap每天必学之下拉菜单
2015/11/25 Javascript
Javascript的表单验证-初识正则表达式
2016/03/18 Javascript
基于JavaScript实现添加到购物车效果附源码下载
2016/08/22 Javascript
微信小程序 网络API发起请求详解
2016/11/09 Javascript
webpack+vue中使用别名路径引用静态图片地址
2017/11/20 Javascript
让网站自动生成章节目录索引的多个js代码
2018/01/07 Javascript
微信小程序swiper实现文字纵向轮播提示效果
2020/01/21 Javascript
用Python编写一个简单的FUSE文件系统的教程
2015/04/02 Python
详解Python的Django框架中的通用视图
2015/05/04 Python
关于Django显示时间你应该知道的一些问题
2017/12/25 Python
Python中if elif else及缩进的使用简述
2018/05/31 Python
浅谈利用numpy对矩阵进行归一化处理的方法
2018/07/11 Python
Django rest framework jwt的使用方法详解
2019/08/08 Python
Python matplotlib生成图片背景透明的示例代码
2019/08/30 Python
如何在Anaconda中打开python自带idle
2020/09/21 Python
CSS3实现的炫酷菜单代码分享
2015/03/12 HTML / CSS
关于HTML5的22个初级技巧(图文教程)
2012/06/21 HTML / CSS
用HTML5实现手机摇一摇的功能的教程
2012/10/30 HTML / CSS
什么是事务?事务有哪些性质?
2012/03/11 面试题
幼儿园庆六一游园活动方案
2014/01/29 职场文书
大学军训感言600字
2014/02/25 职场文书
工程采购员岗位职责
2014/03/09 职场文书
《跟踪台风的卫星》教学反思
2014/04/10 职场文书
2014年环境整治工作总结
2014/12/10 职场文书
公司出纳岗位职责
2015/03/31 职场文书
党小组推荐意见
2015/06/02 职场文书
房屋所有权证明
2015/06/19 职场文书
离职告别感言
2015/08/04 职场文书
导游词之重庆渣滓洞
2020/01/08 职场文书
试用1103暨1103、1101同门大比武 [ DAIWEI ]
2022/04/05 无线电