详解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中ajax调用json数据的使用说明
Mar 17 Javascript
用JSON做数据传输格式中的一些问题总结
Dec 21 Javascript
分享两个手机访问pc网站自动跳转手机端网站代码
Dec 24 Javascript
浅谈JavaScript事件的属性列表
Mar 01 Javascript
Jquery表单验证失败后不提交的解决方法
Oct 18 Javascript
jQuery双向列表选择器select版
Nov 01 Javascript
jQuery图片缩放插件smartZoom使用实例详解
Aug 25 jQuery
详解Vue+Element的动态表单,动态表格(后端发送配置,前端动态生成)
Apr 20 Javascript
js 实现ajax发送步骤过程详解
Jul 25 Javascript
微信小程序自定义单项选择器样式
Jul 25 Javascript
vue 实现微信浮标效果
Sep 01 Javascript
vscode 插件开发 + vue的操作方法
Jun 05 Javascript
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 验证图片生成函数
2009/05/21 PHP
php socket实现的聊天室代码分享
2014/08/16 PHP
再推荐十款免费的php开发工具
2015/11/09 PHP
PHP将URL转换成短网址的算法分享
2016/09/13 PHP
本地图片预览(支持IE6/IE7/IE8/Firefox3)经验总结
2013/03/25 Javascript
js为数字添加逗号并格式化数字的代码
2013/08/23 Javascript
将Datatable转化成json发送前台实现思路
2013/09/06 Javascript
jQuery中:empty选择器用法实例
2014/12/30 Javascript
jQuery寻找n以内完全数的方法
2015/06/24 Javascript
Angular2 之 路由与导航详细介绍
2017/05/26 Javascript
JS处理一些简单计算题
2018/02/24 Javascript
详解webpack4.x之搭建前端开发环境
2019/03/28 Javascript
微信小程序实现多选框全选与取消全选功能示例
2019/05/14 Javascript
[01:02:17]2014 DOTA2华西杯精英邀请赛 5 24 DK VS VG
2014/05/26 DOTA
35个Python编程小技巧
2014/04/01 Python
从零学python系列之数据处理编程实例(一)
2014/05/22 Python
浅析python 内置字符串处理函数的使用方法
2014/06/11 Python
tensorflow创建变量以及根据名称查找变量
2018/03/10 Python
Python下使用Scrapy爬取网页内容的实例
2018/05/21 Python
python selenium 获取标签的属性值、内容、状态方法
2018/06/22 Python
Django框架实现的简单分页功能示例
2018/12/04 Python
使用Python操作MySQL的小技巧
2020/09/10 Python
PyCharm Community安装与配置的详细教程
2020/11/24 Python
python中pow函数用法及功能说明
2020/12/04 Python
基于Jquery和Css3代码制作可以缩放的搜索框
2015/11/19 HTML / CSS
英超联赛的首选足球:Mitre足球
2019/05/06 全球购物
Haggar官网:美国男装品牌
2020/02/16 全球购物
中国电子产品批发商/跨境电商/外贸网:Sunsky-online
2020/04/20 全球购物
单位门卫岗位职责
2013/12/20 职场文书
党支部书记先进事迹
2014/01/17 职场文书
广告传媒专业应届生求职信
2014/03/01 职场文书
中学生操行评语大全
2014/04/24 职场文书
2014年小学语文工作总结
2014/12/20 职场文书
小学三八妇女节活动总结
2015/02/06 职场文书
高中议论文(范文2篇)
2019/08/19 职场文书
Python+Selenium自动化环境搭建与操作基础详解
2022/03/13 Python