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 页面只自动刷新一次
Jul 10 Javascript
jQuery动画animate方法使用介绍
May 06 Javascript
javascript字符串与数组转换汇总
May 26 Javascript
JavaScript创建闭包的两种方式的优劣与区别分析
Jun 22 Javascript
javascript省市区三级联动下拉框菜单实例演示
Nov 29 Javascript
SWFUpload多文件上传及文件个数限制的方法
May 31 Javascript
详解Node.js中exports和module.exports的区别
Apr 19 Javascript
vue params、query传参使用详解
Sep 12 Javascript
谈谈JS中的!!
Dec 07 Javascript
mpvue项目中使用第三方UI组件库的方法
Sep 30 Javascript
layui使用form表单实现post请求页面跳转的方法
Sep 14 Javascript
vue同个按钮控制展开和折叠同个事件操作
Jul 29 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
php5 pdo新改动加载注意事项
2008/09/11 PHP
php+xml实现在线英文词典查询的方法
2015/01/23 PHP
jQuery教程 $()包装函数来实现数组元素分页效果
2013/08/13 Javascript
js/jquery解析json和数组格式的方法详解
2014/01/09 Javascript
如何用jquery控制表格奇偶行及活动行颜色
2014/04/20 Javascript
JQuery实现的按钮倒计时效果
2015/12/23 Javascript
基于HTML+CSS+JS实现增加删除修改tab导航特效代码
2016/08/05 Javascript
jQuery简单实现列表隐藏和显示效果示例
2016/09/12 Javascript
浅谈vue+webpack项目调试方法步骤
2017/09/11 Javascript
vue-cli webpack2项目打包优化分享
2018/02/07 Javascript
JS中数据结构之栈
2019/01/01 Javascript
详解关于JSON.parse()和JSON.stringify()的性能小测试
2019/03/14 Javascript
Vue+Bootstrap收藏(点赞)功能逻辑与具体实现
2020/10/22 Javascript
Python中函数的参数定义和可变参数用法实例分析
2015/06/04 Python
Python中字典(dict)合并的四种方法总结
2017/08/10 Python
对Tensorflow中的变量初始化函数详解
2018/07/27 Python
用python一行代码得到数组中某个元素的个数方法
2019/01/28 Python
利用Python+阿里云实现DDNS动态域名解析的方法
2019/04/01 Python
解决python 虚拟环境删除包无法加载的问题
2020/07/13 Python
浅谈anaconda python 版本对应关系
2020/10/07 Python
Flask处理Web表单的实现方法
2021/01/31 Python
CSS3中31种选择器使用方法教程
2013/12/05 HTML / CSS
canvas进阶之贝塞尔公式推导与物体跟随复杂曲线的轨迹运动
2018/01/10 HTML / CSS
俄罗斯购买内衣网站:Trusiki
2020/08/22 全球购物
琳达·法罗眼镜英国官网:Linda Farrow英国
2021/01/19 全球购物
上海方立数码笔试题
2013/10/18 面试题
临床医学大学生求职信
2013/09/28 职场文书
争论的故事教学反思
2014/02/06 职场文书
小班重阳节活动方案
2014/02/08 职场文书
机关党员公开承诺书
2014/08/30 职场文书
《周恩来的四个昼夜》观后思想汇报范文两篇
2014/09/10 职场文书
2014年老干部工作总结
2014/11/21 职场文书
2015年党支部书记工作总结
2015/05/21 职场文书
元旦晚会主持词开场白
2015/05/28 职场文书
小学生大队委竞选稿
2015/11/20 职场文书