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的的一个隔行变色,鼠标移动变色的小插件
Jul 06 Javascript
js实现动态改变字体大小代码
Jan 02 Javascript
jquery教程限制文本框只能输入数字和小数点示例分享
Jan 13 Javascript
jquery查找tr td 示例模拟
May 08 Javascript
href下载文件根据id取url并下载
May 28 Javascript
jQuery通过Ajax返回JSON数据
Apr 28 Javascript
jQuery监听文件上传实现进度条效果的方法
Oct 16 Javascript
Vue2.0+ElementUI实现表格翻页的实例
Oct 23 Javascript
详解Vue CLI3 多页应用实践和源码设计
Aug 30 Javascript
vue中利用Promise封装jsonp并调取数据
Jun 18 Javascript
javascript获取select值的方法完整实例
Jun 20 Javascript
Element-ui upload上传文件限制的解决方法
Jan 22 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 file_get_contents抓取Gzip网页乱码的三种解决方法
2013/11/12 PHP
PHP 常用的header头部定义汇总
2015/06/19 PHP
PHP基本语法实例总结
2016/09/09 PHP
PHP设计模式之状态模式定义与用法详解
2018/04/02 PHP
Javascript的IE和Firefox兼容性汇编
2006/07/01 Javascript
获取Javscript执行函数名称的方法
2006/12/22 Javascript
IE Firefox 使用自定义标签的区别
2009/10/15 Javascript
给artDialog 5.02 增加ajax get功能详细介绍
2012/11/13 Javascript
关于jQuery object and DOM element
2013/04/15 Javascript
关于删除时的提示处理(确定删除吗)
2013/11/03 Javascript
jquery中对于批量deferred的处理方法
2014/01/22 Javascript
Jquery代码实现图片轮播效果(一)
2015/08/12 Javascript
详解基于Bootstrap扁平化的后台框架Ace
2015/11/27 Javascript
jquery ui dialog替代confirm实例分析
2016/01/25 Javascript
JavaScript结合Bootstrap仿微信后台多图文界面管理
2016/07/22 Javascript
深入理解JavaScript中的尾调用(Tail Call)
2017/02/07 Javascript
jQuery菜单实例(全选,反选,取消)
2017/08/28 jQuery
详解如何实现一个简单的Node.js脚手架
2017/12/04 Javascript
BootStrap modal实现拖拽功能
2018/12/01 Javascript
jsonp格式前端发送和后台接受写法的代码详解
2019/11/07 Javascript
python基础教程之数字处理(math)模块详解
2014/03/25 Python
浅析Git版本控制器使用
2017/12/10 Python
Python基于jieba库进行简单分词及词云功能实现方法
2018/06/16 Python
Python中交换两个元素的实现方法
2018/06/29 Python
Pytorch 高效使用GPU的操作
2020/06/27 Python
如何用JQuery进行表单验证
2013/05/29 面试题
护士自我鉴定范文
2013/10/06 职场文书
大专毕业生自我鉴定
2013/11/21 职场文书
公司成本主管岗位责任制
2014/02/21 职场文书
精神文明建设标语
2014/06/16 职场文书
质量保证书怎么写
2015/02/27 职场文书
新员工辞职信范文
2015/05/12 职场文书
2015年高一班主任工作总结
2015/05/13 职场文书
Python使用random模块实现掷骰子游戏的示例代码
2021/04/29 Python
python函数的两种嵌套方法使用
2022/04/02 Python
CentOS7环境下MySQL8常用命令小结
2022/06/10 Servers