十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
bind();
在成都做网站、网站建设中从网站色彩、结构布局、栏目设置、关键词群组等细微处着手,突出企业的产品/服务/品牌,帮助企业锁定精准用户,提高在线咨询和转化,使成都网站营销成为有效果、有回报的无锡营销推广。创新互联公司专业成都网站建设10多年了,客户满意度97.8%,欢迎成都创新互联客户联系。
参数一:要绑定事件函数的事件名。
参数二:要绑定的事件函数(事件函数名),如果将来有可能删除该绑定的函数,则必须传函数名。
bind()方法可以通过链式调用的形式连续多次调用,进而个同一标签的同一事件(不同事件)添加不同的事件函数。
on('事件名',fn);
one('事件名',fn);该方法绑定的事件函数只能被触发一次。
unbind();
参数一:要解绑事件函数的事件名(如果只传这一个参数,则该事件名中绑定的函数全部解除)。
参数二:要解除绑定的事件函数名。
off();
注意:bind()和unbind()在3.0后已经被on()和off()取代。
事件简写本质就是简化给标签添加事件函数的操作,标准的添加事件方法:on/bind/one,类似于js的DOM2级添加事件函数操作;事件简写类似于DOM0级的事件绑定操作。
jq事件简写绑定事件函数的技术实现原理:
1、jq给每一个事件名定义了同名的函数,用户调用的事件简写形式,就是在调用这个和事件名同名的函数
2、同名函数内部实现原理:当用户调用了该函数,首先获取该函数的函数名(函数名代表的是事件名),在函数内部通过on把通过参数传进来的函数绑定在函数名对应的事件上。
blur(fn):失去焦点时触发该方法。
focus(fn):当鼠标或tab按钮让元素获得焦点时,触发该函数。
change(fn):表单元素失去焦点(单选框、复选框、下拉菜单标签被选中即可触发,不需等待失去焦点),触发该事件。
click(fn):鼠标点击时触发该事件。
dbclick(fn):双击元素时触发该事件(注意:把click和dbclick用于同一个元素会产生问题)。
$(window).scroll(fn):当页面滚动时触发事件。
hover(fn1,fn2):鼠标移入触发fn1函数,鼠标移出触发fn2函数。
复合事件:toggle().在1.8之前中,复合了奇、偶次点击事件,在1.9之后的版本中toggle方法用于jq的动画
toggle()方法在1.8之前的版本中需要两个函数类型作为参数,奇数次点击触发第一个函数,偶数次店家触发第二个函数。
事件对象的获取:在事件触发的函数中传递event参数。
event.type:事件类型
event.target:触发事件的元素
e.currentTarget:事件绑定在哪个元素上
event.pageX:鼠标相对于文档的左侧坐标
event.pageY:鼠标相对于文档的顶部坐标
e.preventDefault():取消标签事件,如a标签的页面跳转。
e.stopPropagation():阻止事件冒泡
1、阻止事件冒泡
stopPropagation()方法
2、阻止默认行为
preventDefault()方法
注意:1、return false 在jQuery中是即阻止事件冒泡又阻止默认行为
2、jQuery不支持事件捕获
解密jQuery事件核心:
events:一个或多个用空格分隔的事件类型和可选的命名空间,如"click"或"keydown.myPlugin" 。
selector:一个选择器字符串用于过滤器的触发事件的选择器元素的后代。如果选择器为null或省略,当它到达选定的元素,事件总是触发。
data:当一个事件被触发时要传递event.data给事件处理函数。
fn:该事件被触发时执行的函数。 false 值也可以做一个函数的简写,返回false。
当第二个参数'selector'为null时,on()和bind()其实在用法上基本上没有任何区别了,所以我们可以认为on()只是比bind()多了一个可选的'selector'参数,所以on()可以非常方便的替换掉bind()
在 1.4之前相信大家非常喜欢使用live(),因为它可以把事件绑定到当前以及以后添加的元素上面,当然在1.4之后delegate()也可以做类似的事情了。live()的原理很简单,它是通过document进行事件委派的,因此我们也可以使用on()通过将事件绑定到document来达到 live()一样的效果。
1、live()写法
2、on()写法
这里的关键就是第二个参数'selector'在起作用了。它是一个过滤器的作用,只有被选中元素的后代元素才会触发事件。
delegate() 是1.4引入的,目的是通过祖先元素来代理委派后代元素的事件绑定问题,某种程度上和live()优点相似。只不过live()是通过document元素委派,而delegate则可以是任意的祖先节点。使用on()实现代理的写法和delegate()基本一致。
1、delegate()的写法
2、on()写法
貌似第一个和第二个参数的顺序颠倒了一下,别的基本一样。
jQuery中用on来绑定事件,常用写法
两种写法哪个更好?
1. $(document).on 将事件委托document, $('#idname').on 将事件绑定到.className元素上。每次document有点击动作,浏览器都会判断当前点击的对象。如果匹配再决定要不要执行,多了个判断环节。JS渲染效率很高,所以此异同基本可以忽略。
2. $("className").on 为onclick绑定,只有在页面onload时执行一次。页面刷新后,新加载的具有className的元素便没有事件绑定到上面了。相反$(document).on这种方法会刷新和重新赋予绑定操作,所以一定程度上更为全面。
1、新建一个静态页面bind.html,并引入jquery核心文件。
2、在body/body标签中,插入一个button按钮,添加id属性值。
3、在script/script标签中,添加按钮点击事件,利用on()方法绑定。
4、保存代码并运行项目,打开浏览器查看界面效果,点击按钮查看控制台。
5、将on()方法改为bind()方法,然后保存代码,点击按钮查看打印结果。
6、在jQuery3.0以下版本中,可以使用delegate()方法绑定点击事件。
7、除了上述之外,还有live()方法,不过这个方法jQuery1.7后就被废弃了。