JavaScript中利用jQuery绑定事件的几种方式小结


Posted in Javascript onMarch 06, 2016

开发过程中经常要给DOM元素添加一些事件,下面介绍几种方式:

先写几个好看的button

//引入JQuery
<script type="text/javascript" src="jquery-1.8.3.min.js"></script>
<span id="tips"></span>
<input type="button" id="btn1" value="OK1" onclick="alert('hello btn1');">
<input type="button" id="btn2" value="OK2" click-type="listener">
<input type="button" id="btn3" value="OK3" click-type="listener">
<input type="button" id="btn4" value="OK4">
<input type="button" id="btn5" value="OK5">
<div id="btn-list">
<input type="button" id="btn6" value="OK6">
<input type="button" id="btn7" value="OK7">
</div>

效果如下:

JavaScript中利用jQuery绑定事件的几种方式小结

1、直接在btn1使用onclick,这种方式称为内联事件,简单粗暴,好处是可以清晰地看到button绑定了click事件;这种方式等同于:(element).onclick;

这种方式的缺点,一个元素只能指定一个内联事件,添加了这段代码之后会发现onclick="alert('hello btn1');"被覆盖了:

(function(){
  var _btn1 = document.getElementById('btn1'),
    _tips = document.getElementById('tips');
    _btn1.onclick=function(){
      _tips.innerHTML='hello world~';
    };
     
})();

2、使用原生JS给多个元素绑定事件,在 IE 9 之前的版本中,需要使用 attachEvent替代addEventListener

(function(){
  var _btns=document.querySelectorAll("[click-type=listener]"), i = 0, len = _btns.length;
     for (i; i < len; ++i) {
      var _btn=_btns[i];
      _btn.addEventListener("click", function (evt) {
        var target = evt.target
        alert('hello '+target.id);
      });
    }
 
})();

3、第二种方式逻辑比较简单,逼格会高一点,但是代码量比较多,而且还需要考虑IE的兼容性问题,由于我们的项目一般都会使用到JQuery,所以就可以这样写了:

$("#btn4").click(function(){
  alert("hello btn4");
});
 
$("#btn5").on("click",function(){
  alert("hello btn5");
});

上面使用到的on和bind方法效果是一样的;

4、使用on,给多个元素绑定一个或多个事件:

$("#btn-list").on("click","input",function(evt){
  alert("hello "+ evt.target.id);
});

这是我现在在开发中最常用的一种方法,有个好处,举个栗子:

/*动态添加几个button*/
(function(){
  for(var i=8;i<10;i++){
    $("#btn-list").append("<input type='button' id='btn"+i+"' value='OK"+i+"'>");
  }
})();

这样动态添加元素的时候可以自动添加click事件,比如我们经常使用AJAX加载一些数据动态添加到页面上,这样就简单多了。

另外:使用原生JS利用事件委托实现也比较简单,

<ul id='list'>
  <li>css</li>
  <li>js</li>
  <li>html</li>
</ul>

(function(){
  var a=document.getElementById('list');
    a.addEventListener('click',function(e){
    var b = e.target; 
    alert(b.innerHTML);
  },false);
})();

Javascript 相关文章推荐
AJAX使用了UpdatePanel后无法使用alert弹出脚本
Apr 02 Javascript
LazyLoad 延迟加载(按需加载)
May 31 Javascript
jQuery $.data()方法使用注意细节
Dec 31 Javascript
js中cookie的添加、取值、删除示例代码
Oct 21 Javascript
js判断数据类型如判断是否为数组是否为字符串等等
Jan 15 Javascript
JavaScript中利用各种循环进行遍历的方式总结
Nov 10 Javascript
JavaScript获取服务器端时间的方法
Nov 29 Javascript
JavaScript中的子窗口与父窗口的互相调用问题
Feb 08 Javascript
BootStrap实现鼠标悬停下拉列表功能
Feb 17 Javascript
Vue.js中兄弟组件之间互相传值实例
Jun 01 Javascript
详解React服务端渲染从入门到精通
Mar 28 Javascript
利用Vue实现简易播放器的完整代码
Dec 30 Vue.js
Node.js模块封装及使用方法
Mar 06 #Javascript
JavaScript中三种异步上传文件方式
Mar 06 #Javascript
JavaScript中获取纯正的undefined的方法
Mar 06 #Javascript
JS面向对象编程详解
Mar 06 #Javascript
深入学习JavaScript的AngularJS框架中指令的使用方法
Mar 05 #Javascript
使用Jasmine和Karma对AngularJS页面程序进行测试
Mar 05 #Javascript
JavaScript的React框架中的JSX语法学习入门教程
Mar 05 #Javascript
You might like
php加水印的代码(支持半透明透明打水印,支持png透明背景)
2013/01/17 PHP
php数组中包含中文的排序方法
2014/06/03 PHP
PHP中的一些常用函数收集
2015/05/26 PHP
PHP模板引擎Smarty自定义变量调解器用法
2016/04/11 PHP
Javascript中暂停功能的实现代码
2007/03/04 Javascript
用户注册常用javascript代码
2009/08/29 Javascript
基于jquery跨浏览器显示的file上传控件
2011/10/24 Javascript
js实现双向链表互联网机顶盒实战应用实现
2011/10/28 Javascript
JS+CSS实现一个气泡提示框
2013/08/18 Javascript
js实现俄罗斯方块小游戏分享
2014/01/31 Javascript
使用JavaScript获取地址栏参数的方法
2014/12/19 Javascript
JavaScript基本的输出和嵌入式写法教程
2015/10/20 Javascript
jquery计算出left和top,让一个div水平垂直居中的简单实例
2016/07/13 Javascript
JavaScript 输出显示内容(document.write、alert、innerHTML、console.log)
2016/12/14 Javascript
jQuery中ztree 点击文本框弹出下拉框的实例代码
2017/02/05 Javascript
详解vue.js+UEditor集成 [前后端分离项目]
2017/07/07 Javascript
Angularjs实现下拉框联动的示例代码
2017/08/22 Javascript
微信端调取相册和摄像头功能,实现图片上传,并上传到服务器
2019/05/16 Javascript
python在linux系统下获取系统内存使用情况的方法
2015/05/11 Python
Python用Bottle轻量级框架进行Web开发
2016/06/08 Python
python用模块zlib压缩与解压字符串和文件的方法
2016/12/16 Python
Pandas探索之高性能函数eval和query解析
2017/10/28 Python
Python编程求质数实例代码
2018/01/31 Python
windows下 兼容Python2和Python3的解决方法
2018/12/05 Python
Python语法分析之字符串格式化
2019/06/13 Python
python 列表转为字典的两个小方法(小结)
2019/06/28 Python
python的pygal模块绘制反正切函数图像方法
2019/07/16 Python
Python 合并拼接字符串的方法
2020/07/28 Python
Staples美国官方网站:办公用品一站式采购
2016/07/28 全球购物
约瑟夫·特纳男装:Joseph Turner
2017/10/10 全球购物
美国户外服装和装备购物网站:Outland USA
2020/03/22 全球购物
日语专业毕业生求职信
2013/12/04 职场文书
领导干部群众路线教育实践活动剖析材料
2014/10/10 职场文书
2015重阳节座谈会主持词
2015/07/30 职场文书
初中政治教师教学反思
2016/02/23 职场文书
基于Redis的List实现特价商品列表功能
2021/08/30 Redis