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 相关文章推荐
JS 进度条效果实现代码整理
May 21 Javascript
基于jquery异步传输json数据格式实例代码
Nov 23 Javascript
jQuery获取(选中)单选,复选框,下拉框中的值
Feb 21 Javascript
js获取元素外链样式的方法
Jan 27 Javascript
原生js实现类似弹窗抖动效果
Apr 02 Javascript
jquery实现表格隔行换色效果
Nov 19 Javascript
jquery悬浮提示框完整实例
Jan 13 Javascript
javascript判断图片是否加载完成的方法推荐
May 13 Javascript
JavaScript 闭包机制详解及实例代码
Oct 10 Javascript
Bootstrap导航条的使用和理解3
Dec 14 Javascript
iscroll实现下拉刷新功能
Jul 18 Javascript
jquery向后台提交数组的代码分析
Feb 20 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
php htmlentities和htmlspecialchars 的区别
2008/08/18 PHP
学习php设计模式 php实现模板方法模式
2015/12/08 PHP
Laravel使用swoole实现websocket主动消息推送的方法介绍
2019/10/20 PHP
JS中动态添加事件(绑定事件)的代码
2011/01/09 Javascript
javascript上传图片前预览图片兼容大多数浏览器
2013/10/25 Javascript
深入理解javascript动态插入技术
2013/11/12 Javascript
js对字符的验证方法汇总
2015/02/04 Javascript
浅谈JavaScript异常处理语句
2015/06/26 Javascript
JavaScript+canvas实现七色板效果实例
2016/02/18 Javascript
学习使用bootstrap基本控件(table、form、button)
2016/04/12 Javascript
JavaScript自学笔记(必看篇)
2016/06/23 Javascript
JQuery组件基于Bootstrap的DropDownList(完整版)
2016/07/05 Javascript
js html css实现复选框全选与反选
2016/10/09 Javascript
NodeJs安装npm包一直失败的解决方法
2017/04/28 NodeJs
详谈AngularJs 控制器、数据绑定、作用域
2017/07/09 Javascript
JS中使用textPath实现线条上的文字
2017/12/25 Javascript
Vue监听事件实现计数点击依次增加的方法
2018/09/26 Javascript
浅谈es6中的元编程
2020/12/01 Javascript
python监控网站运行异常并发送邮件的方法
2015/03/13 Python
PHP实现发送和接收JSON请求
2018/06/07 Python
详解python算法之冒泡排序
2019/03/05 Python
python3图片文件批量重命名处理
2019/10/31 Python
Python爬虫与反爬虫大战
2020/07/30 Python
html5的localstorage详解
2017/05/09 HTML / CSS
美国隐形眼镜网上商店:Lens.com
2019/09/03 全球购物
美国最大的购物网站:Amazon.com(亚马逊美国)
2020/05/23 全球购物
使用索引有什么好处
2016/07/27 面试题
文明家庭先进事迹材
2014/01/27 职场文书
正风肃纪剖析材料
2014/09/30 职场文书
法院四风对照检查材料思想汇报
2014/10/06 职场文书
2015年试用期工作总结
2014/12/12 职场文书
云台山导游词
2015/02/03 职场文书
实习单位推荐信
2015/03/27 职场文书
汽车车尾标语大全
2015/08/11 职场文书
超详细Python解释器新手安装教程
2021/05/10 Python
如何vue使用el-table遍历循环表头和表体数据
2022/04/26 Vue.js