JS与JQ绑定事件的几种方式.
JS与JQ绑定事件的几种方式
JS绑定事件的三种方式
直接在DOM中进行绑定
<button onclick="alert('success')" type="button" id="btn">测试按钮</button>
DOM中绑定函数名
<button onclick="testFun" type="button" id="btn">测试按钮</button>
<script>
function testFun() {
alert('sucess')
}
</script>
使用on+事件名绑定
var btn = document.getElementById('btn')
btn.onclick = function () {
alert('成功')
}
使用事件监听绑定
- 此方法需要考虑兼容性.
- 非IE: element.addEventListener(type, handler, false)
- IE: element.attachEvent('on' + type, handler)
<script>
var btn = document.getElementById('btn')
if (btn.addEventListener) {
btn.addEventListener('click', function () {
alert('成功')
}, false)
} else {
btn.attachEvent('onclick', function () {
alert('成功')
})
}
</script>
区别
- 前两种就不再说了, 感觉现在Vue框架事件绑定方式类似于第二种
- 事件监听的方式的优势在于, 可以为同一个事件绑定多个方法.
- 如果是第一个进行绑定多个方法的话, 会把函数替换掉, 没有办法绑定多次.
jQuery的几种事件绑定方式
- jQuery提供了四种绑定方式: bind、live、delegate、on
- 对应接触事件的四种方式: unbind、die、undelegate、off
bind
:
- 使用频率较高的一种, 作用是在选择到的元素上绑定特定事件类型的监听函数.
element.bind(types, data, fn)
- 参数含义:
- type: 事件类型, 如: click、change、mouseover
- data: [可选],传入监听函数的参数, 通过event.data取到.
- fn: 监听函数. 可以传入event对象, 但是这里的event对象是jq封装的对象, 与原生有区别
// bind源码
bind: function( types, data, fn ) {
return this.on( types, null, data, fn );
}
- bind的特点是吧监听器绑定到目标元素上, 但无法形成动态绑定, 需要再次bind
- live可以对目标元素形成动态绑定.
- 如果有再次添加的元素, 需要再次使用
bind
进行添加.
live
- 并没有把事件绑定到自己身上, 而是绑定到了顶级的父元素document上.
// 源码
live: function( types, data, fn ) {
jQuery( this.context ).on( types, this.selector, data, fn );
return this;
}
- 通常情况下, 这个context指的是
document
- 但在这种情况下document会变得非常重.
delegate
- 将事件绑定在就近的元素上
delegate: function( selector, types, data, fn ) {
return this.on( types, selector, data, fn );
}
- delegate() 方法为指定的元素(属于被选元素的子元素)添加一个或多个事件处理程序,并规定当这些事件发生时运行的函数。
// button 是在div中的一个标签.
$("div").delegate("button","click",function(){
$("p").slideToggle();
});
on
- 其实所有的方法都是调用的on这个方法.
on(type, [selector], [data], fn)
- 使用
on
绑定可以极大的节省效率. - 使用on可以完成所有方法的绑定.
- on里面的代码量很大.
- 最后一个参数 one 没有搞明白.
JS与JQ绑定事件的几种方式.的更多相关文章
- jq绑定事件的4种方式
jQuery提供了多种绑定事件的方式,每种方式各有其特点,明白了它们之间的异同点,有助于我们在写代码的时候进行正确的选择,从而写出优雅而容易维护的代码.下面我们来看下jQuery中绑定事件的方式都有哪 ...
- 为input标签绑定事件的几种方式
为input标签绑定事件的几种方式 1.JavaScript原生态的方式,直接复制下面的代码就会有相应的效果 <!DOCTYPE html><html><head> ...
- Android_安卓为按钮控件绑定事件的五种方式
一.写在最前面 本次,来介绍一下安卓中为控件--Button绑定事件的五种方式. 二.具体的实现 第一种:直接绑定在Button控件上: 步骤1.在Button控件上设置android:onClick ...
- jQuery绑定事件的四种方式:bind、live、delegate、on
1.jQuery操作DOM元素的绑定事件的四种方式 jQuery中提供了四种事件监听方式,分别是bind.live.delegate.on,对应的解除监听的函数分别是unbind.die.undele ...
- GIS-ArcGIS JS API FeatureLayer图层绑定事件的几种方式
一.以下四种方式均可以 importantProvinceLayer.on("click", DoIdentify); dojo.connect(importantProvince ...
- jQuery绑定事件的四种方式
jQuery提供了多种绑定事件的方式,每种方式各有其特点,明白了它们之间的异同点,有助于我们在写代码的时候进行正确的选择,从而写出优雅而容易维护的代码.下面我们来看下jQuery中绑定事件的方式都 ...
- jQuery绑定事件的四种方式区别
jQuery中提供了四种事件监听方式,分别是bind.live.delegate.on,对应的解除监听的函数分别是unbind.die.undelegate.off.在开始看他们之前 一:bind(t ...
- Javascript绑定事件的两种方式的区别
命名函数 <input type="button" onclick="check()" id="btn"/> <scrip ...
- jQuery绑定事件的四種方式
这篇文章主要介绍的是jQuery绑定事件的四种方式相关内容,下面我们就与大家一起分享. jQuery绑定事件的四种方式 jQuery提供了多种绑定事件的方式,每种方式各有其特点,明白了它们之间的异同点 ...
随机推荐
- 服务器返回JSON,IE出现下载问题
我向来的观点,IE就是个奇葩. 服务器返回json,chrome处理得好地地,但IE却奇葩地向你请求是否要保存这个JSON文件? 之所以出现这种弱智现象,是因为IE无法识别一个所谓的响应头部:appl ...
- 【bzoj3620】似乎在梦中见过的样子
枚举左端点,对于每个右端点处理出以右端点为结尾最大长度使得从左端点开始的前缀等于以右端点结束的后缀,即next数组 然后一直往前跳,直到长度小于子串长度的一半为止. #include<algor ...
- A JavaScript library for reading EXIF meta data from image files.
exif-js/exif-js: JavaScript library for reading EXIF image metadata https://github.com/exif-js/exif- ...
- 开启 J2EE(六)— Servlet之Filter具体解释及乱码处理实例
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/akkzhjj/article/details/36471477 定义和功能 Filter:过滤器,它 ...
- xalion三层与Web开发帖子一览表 good
使用http.sys,让delphi 的多层服务飞起来(Delphi借用http.sys充当http服务器,也就可以发送返回JSON等信息,当然浏览器也可以使用)http://www.cnblogs. ...
- 无线网络中的MAC协议(1)
前文我们对传统的有线网络的MAC协议进行了分析,接下来我们在对无线网络的MAC也进行一个详细的介绍.那么无线网络中的MAC工作方式是如何的呢?无线局域网(WLAN)中MAC所对应的标准为IEEE 80 ...
- contents属性
CALayer 有一个属性叫做contents,这个属性的类型被定义为id,意味着它可以是任何类型的对象.在这种情况下,你可以给contents属性赋任何值,你的app仍然能够编译通过.但是,在实践中 ...
- 转:Oracle:删除表空间
原文:http://space.itpub.net/40239/viewspace-365948 OMF和非OMF管理的数据文件在DROP TABLESPACE时是否会自动删除,做了测试: SQL&g ...
- uestc 250 windy数(数位dp)
题意:不含前导零且相邻两个数字之差至少为2的正整数被称为windy数. windy想知道,在A和B之间,包括A和B,总共有多少个windy数? 思路:数位dp #include<iostream ...
- @font-face 用fontsquirrel把ttf文件获取别的文件格式
@font-face是css3的一个模块,但是@font-face这个功能早在IE4就支持了,他主要是把自己定义的Web字体嵌入到你的网页中, @font-face { font-family: &l ...