十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
jQuery中用on来绑定事件,常用写法
创新互联公司专业为企业提供澄江网站建设、澄江做网站、澄江网站设计、澄江网站制作等企业网站建设、网页设计与制作、澄江企业网站模板建站服务,十年澄江做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。
两种写法哪个更好?
1. $(document).on 将事件委托document, $('#idname').on 将事件绑定到.className元素上。每次document有点击动作,浏览器都会判断当前点击的对象。如果匹配再决定要不要执行,多了个判断环节。JS渲染效率很高,所以此异同基本可以忽略。
2. $("className").on 为onclick绑定,只有在页面onload时执行一次。页面刷新后,新加载的具有className的元素便没有事件绑定到上面了。相反$(document).on这种方法会刷新和重新赋予绑定操作,所以一定程度上更为全面。
概述
1、#Grid1Table不是#conut的父节点,p标签是#logout的父节点
2、代码写法:
$('p').on('click', '#count', function() {
//function code here.
});
解析
1、p包裹a标签(id = logout),所以logout的父节点(父标签)为p(没有标注id或者class)
pa href='#' id='logout'【退出】/a/p
2、$("#logout").on('click',function() 方法要求参数为非随动变量(全局变量),所以#logout为不可行参数,且由于代码没有贴全所以这里我先断定#Grid1Table为非父节点,而p为#logout父节点,所以这里可以改成:
$('p').on('click', '#count', function() {
//function code here.
});
拓展内容
juqery on()方法详解
定义和用法
on() 方法在被选元素及子元素上添加一个或多个事件处理程序。
自 jQuery 版本 1.7 起,on() 方法是 bind()、live() 和 delegate() 方法的新的替代品。该方法给 API 带来很多便利,我们推荐使用该方法,它简化了 jQuery 代码库。
注意:使用 on() 方法添加的事件处理程序适用于当前及未来的元素(比如由脚本创建的新元素)。
提示:如需移除事件处理程序,请使用 off() 方法。
提示:如需添加只运行一次的事件然后移除,请使用 one() 方法。
语法
$(selector).on(event,childSelector,data,function)
参数
event 必需。规定要从被选元素移除的一个或多个事件或命名空间。由空格分隔多个事件值,也可以是数组。必须是有效的事件。
childSelector 可选。规定只能添加到指定的子元素上的事件处理程序(且不是选择器本身,比如已废弃的 delegate() 方法)。
data 可选。规定传递到函数的额外数据。
function 可选。规定当事件发生时运行的函数。
.bind()与.on()的区别:
(1)是否支持selector这个参数值。由于javascript的事件冒泡特性,如果在父元素上注册了一个事件处理函数,当子元素上发生这个事件的时候,父元素上的事件处理函数也会被触发。
如果使用on的时候,不设置selector,那么on与bind就没有区别了。
(2)on绑定的事件处理函数,对于未来新增的元素一样可以的,和delegate效果相同,而bind则不行。
(3) delegate用法与on()相同,只是参数的顺序不同:
扩展资料:
.bind()与.on()的实际应用:
1.bind()是直接绑定在元素上 ,将一本地地址与一套接口捆绑。如无错误发生,则bind()返回0。否则的话,将返回-1,应用程序可通过WSAGetLastError()获取相应错误代码。
用于事件处理程序
function ClassName(){
this.eventHandler = (function(){
}).bind(this);
}
2.on()则实现事件代理, 可以在匹配元素上绑定一个或者多个事件处理函数。
(1) 用来绑定多事件,并且为同一函数,如:
$('div').on('click mouseover',function(){
//do sth
});
(2)多个事件绑定不同函数,如:
$('div').on({
'click':function(){
//do sth
},
'mouseover':function(){
//do sth
}
});
(3)事件代理,如:
html:
button id="bt1"按钮1/button
jq:
$('#bt1').on('click',function(){
$('body').append('button按钮2/button');
});
$('body').on('click','.bt2',function(){
console.log('这是bt2');
}
参考资料:百度百科-bind()
后面动态生成dom元素,需要委派事件处理
由于当初没有该元素,直接对dom元素绑定事件,无法使后期该类型dom生效
必须绑定给该dom的父元素,你这里是body元素,让父元素再传递给内部的该子dom元素,从而使之生效。
委派事件:把事件委派给dom元素的父元素,因为父元素始终存在,故而必须生效