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 相关文章推荐
页面调用单个swf文件,嵌套出多个方法。
Nov 21 Javascript
SOSO地图JS画出标注和中心点以html形式运行
Aug 09 Javascript
解决jquery实现的radio重新选中的问题
Jul 03 Javascript
JSON字符串转JSON对象
Jul 31 Javascript
轻松理解Javascript变量的相关问题
Jan 20 Javascript
loading动画特效小结
Jan 22 Javascript
js获取ip和地区
Mar 10 Javascript
使用canvas及js简单生成验证码方法
Apr 02 Javascript
详解Angular 开发环境搭建
Jun 22 Javascript
详解Axios 如何取消已发送的请求
Oct 20 Javascript
layui 弹出层值回传解决方式
Nov 14 Javascript
jquery实现吸顶导航效果
Jan 08 jQuery
炫酷的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
处理单名多值表单的详解
2013/06/08 PHP
PHP实现文件上传功能实例代码
2017/05/18 PHP
微信封装的调用微信签名包的类库
2017/06/08 PHP
原型方法的不同写法居然会影响调试的解决方法
2007/03/08 Javascript
JS面向对象编程 for Cookie
2010/09/19 Javascript
Javascript中的delete介绍
2012/09/02 Javascript
jQuery实现用方向键控制层的上下左右移动
2013/01/13 Javascript
通过js获取上传的图片信息(临时保存路径,名称,大小)然后通过ajax传递给后端的方法
2015/10/01 Javascript
javascript实现简单的ajax封装示例
2016/12/28 Javascript
快速使用node.js进行web开发详解
2017/04/26 Javascript
JS实现websocket长轮询实时消息提示的效果
2017/10/10 Javascript
angular写一个列表的选择全选交互组件的示例
2018/01/22 Javascript
基于express中路由规则及获取请求参数的方法
2018/03/12 Javascript
微信小程序WebSocket实现聊天对话功能
2018/07/06 Javascript
React中this丢失的四种解决方法
2019/03/12 Javascript
webpack 最佳配置指北(推荐)
2020/01/07 Javascript
es6函数之箭头函数用法实例详解
2020/04/25 Javascript
Python黑魔法Descriptor描述符的实例解析
2016/06/02 Python
Python第三方库xlrd/xlwt的安装与读写Excel表格
2017/01/21 Python
Django页面数据的缓存与使用的具体方法
2019/04/23 Python
Python3.0 实现决策树算法的流程
2019/08/08 Python
Python While循环语句实例演示及原理解析
2020/01/03 Python
使用pymysql查询数据库,把结果保存为列表并获取指定元素下标实例
2020/05/15 Python
Keras中 ImageDataGenerator函数的参数用法
2020/07/03 Python
利用Python pandas对Excel进行合并的方法示例
2020/11/04 Python
python“静态”变量、实例变量与本地变量的声明示例
2020/11/13 Python
python绘图模块之利用turtle画图
2021/02/12 Python
大学生村官任职感言
2014/01/09 职场文书
九月份红领巾广播稿
2014/01/22 职场文书
《金色的脚印》教后反思
2014/04/23 职场文书
习近平在党的群众路线教育实践活动总结大会上的讲话
2014/10/21 职场文书
考试作弊检讨书
2014/10/21 职场文书
志愿者个人总结
2015/03/03 职场文书
党风廉政教育心得体会2016
2016/01/22 职场文书
2019最新版火锅店的创业计划书 !
2019/07/12 职场文书
使用CSS实现按钮边缘跑马灯动画
2023/05/07 HTML / CSS