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 相关文章推荐
Jquery中使用setInterval和setTimeout的方法
Apr 08 Javascript
Js动态添加复选框Checkbox的实例方法
Apr 08 Javascript
js 剪切板应用clipboardData详细解析
Dec 17 Javascript
jquery 页眉单行信息滚动显示实现思路及代码
Jun 26 Javascript
实现placeholder效果的方案汇总
Jun 11 Javascript
Markdown与Bootstrap相结合实现图片自适应属性
May 04 Javascript
vue日期组件 支持vue1.0和2.0
Jan 09 Javascript
react-native-fs实现文件下载、文本存储的示例代码
Sep 22 Javascript
浅谈在vue项目中如何定义全局变量和全局函数
Oct 24 Javascript
JS复杂判断的更优雅写法代码详解
Nov 07 Javascript
javascript json字符串到json对象转义问题
Jan 22 Javascript
JavaScript Date对象功能与用法学习记录
Apr 28 Javascript
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 array_unique之后json_encode需要注意
2011/01/02 PHP
destoon公司主页模板风格的添加方法
2014/06/20 PHP
ThinkPHP采用原生query实现关联查询left join实例
2014/12/02 PHP
PHP基于双向链表与排序操作实现的会员排名功能示例
2017/12/26 PHP
PHP设计模式之建造者模式定义与用法简单示例
2018/08/13 PHP
讲两件事:1.this指针的用法小探. 2.ie的attachEvent和firefox的addEventListener在事件处理上的区别
2007/04/12 Javascript
input 高级限制级用法
2009/03/26 Javascript
jQuery拖动图片删除示例
2013/05/10 Javascript
jquery动态加载js三种方法实例
2013/08/03 Javascript
使用js操作cookie的一点小收获分享
2013/09/03 Javascript
JavaScript instanceof 的使用方法示例介绍
2013/10/23 Javascript
jQuery中change事件用法实例
2014/12/26 Javascript
浅析JavaScript事件和方法
2015/02/28 Javascript
jQuery晃动层特效实现方法
2015/03/09 Javascript
jQuery实现转动随机数抽奖效果的方法
2015/05/21 Javascript
apply和call方法定义及apply和call方法的区别
2015/11/15 Javascript
解析Node.js基于模块和包的代码部署方式
2016/02/16 Javascript
JS实现获取剪贴板内容的方法
2016/06/21 Javascript
AngularJS入门教程之模块化操作用法示例
2016/11/02 Javascript
JS实现图片放大缩小的方法
2017/02/15 Javascript
JS异步加载的三种实现方式
2017/03/16 Javascript
Vue 使用中的小技巧
2018/04/26 Javascript
layui实现左侧菜单点击右侧内容区显示
2019/07/26 Javascript
Openlayers实现距离面积测量
2020/09/28 Javascript
使用python分析git log日志示例
2014/02/27 Python
Python中关于浮点数的冷知识
2019/09/22 Python
HTML5 Canvas绘制圆点虚线实例
2015/01/01 HTML / CSS
总结html5自定义属性有哪些
2020/04/01 HTML / CSS
我们是伦敦女孩:WalG
2018/01/08 全球购物
财务与信息服务专业推荐信
2013/11/28 职场文书
学期评语大全
2014/04/30 职场文书
大学社团招新的通讯稿
2014/09/10 职场文书
竞选纪律委员演讲稿
2014/09/13 职场文书
2015年党员干部承诺书
2015/01/21 职场文书
读书笔记格式
2015/07/02 职场文书
python实现会员管理系统
2022/03/18 Python