详解jquery事件delegate(的使用方法

详解jquery事件delegate()的使用方法

这篇文章主要详解了jquery事件代理人()的使用方法,委托()方法为指定的元素(属于被选元素的子元素)添加一个或多个事件处理程序,并规定当这些事件发生时运行的函数,感兴趣的小伙伴们可以参考一下

我们先看官方是怎么说代理人()方法,委托()方法为指定的元素(属于被选元素的子元素)添加一个或多个事件处理程序,并规定当这些事件发生时运行的函数,使用代理人()方法的事件处理程序适用于当前或未来的元素(比如由脚本创建的新元素)。

语法

很简单

$(选择器)。委托(子选择器、事件、数据、函数)

参数说明

childSelector 必需。规定要附加事件处理程序的一个或多个子元素。

event 必需。规定附加到元素的一个或多个事件。

由空格分隔多个事件值。必须是有效的事件。

data 可选。规定传递到函数的额外数据。

function 必需。规定当事件发生时运行的函数。

代表的函数是被某一类型的共同父元素调用。

listNode.delegate( .条件-删除,点击,函数(e){

e。防止默认();

$(这个)。父母(。搜索条件项目)。移除();

});

完整实例(要实现的效果)

函数renderSearchConditions(选择id,条件){ var conditions template= div class= search-conditions-list-section

ul class=搜索条件列表/ul

/div ,

listNode=$(conditionsTemplate);

listitem template= Li class= search-condition-item data-type= { conditon type } span { condition }/spana class= condition-remove href= # x/a/Li;

对于(条件中的变量键)

{

var condition=conditions[key].关键词,

conditionType=conditions[key].类型,

listItemNode=$ .substitute(listItemTemplate,{conditionType:conditionType,condition:condition });

listnode。append(listItemNode);

}

$(选择身份证).prepend(列表节点);

listNode.delegate( .条件-删除,点击,函数(e){

e。防止默认();

$(这个)。父母(。搜索条件项目)。移除();

});

}

1.绑定的事务中,获取事务源,调用隐藏办法,并传入事务源对象:

$(文档)。委托(正文,点击,函数(e) {

var ev=e | | window.event//事务

//var target=ev。目标| | ev。src元素;//获得事务源

hide(ev.target || ev.srcElement,true);

});

底本用的$(窗口),然则IE8之前的,貌似有臭虫。

$(文档)不好之处,页面加载完后,会触发一次.

2.隐藏办法中,断定该事务源是否从指定元素中发出,即事务源元素是不是指定元素的子元素或者其本身。

//子元素断定====

如果(!窗户。find)html元素。原型。包含=函数(B){

返回这个。比较文档位置(B)-190

};

函数隐藏(dom,isClick) {

var nn,t,_isClick=!isClick

尝试{

对于(对象列表中的变量n){

nn=obj list[n];

t=nn。get选项( target )[0];

if(_ is click(t==DOM | | t . contains(DOM)))返回;

如果(!_isClick ||!nn.box[0].包含(DOM))nn。hide();

}

} catch(e) {

}

}

3.上方的隐藏办法中,点击变量断定是不是点击事务触发的。以便处理惩罚调整大小的调整大小用设置超时作处理惩罚,降落内存消费。

var reTime=null

$(窗口)。bind(resize ,function() {

if(reTime)清除超时(reTime);

reTime=setTimeout(hide,50);

});

以上就是关于jquery事件代理人()的使用方法相关内容,希望对大家的学习有所帮助。

详解jquery事件delegate(的使用方法