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绑定事件的几种方式.的更多相关文章

  1. jq绑定事件的4种方式

    jQuery提供了多种绑定事件的方式,每种方式各有其特点,明白了它们之间的异同点,有助于我们在写代码的时候进行正确的选择,从而写出优雅而容易维护的代码.下面我们来看下jQuery中绑定事件的方式都有哪 ...

  2. 为input标签绑定事件的几种方式

    为input标签绑定事件的几种方式 1.JavaScript原生态的方式,直接复制下面的代码就会有相应的效果 <!DOCTYPE html><html><head> ...

  3. Android_安卓为按钮控件绑定事件的五种方式

    一.写在最前面 本次,来介绍一下安卓中为控件--Button绑定事件的五种方式. 二.具体的实现 第一种:直接绑定在Button控件上: 步骤1.在Button控件上设置android:onClick ...

  4. jQuery绑定事件的四种方式:bind、live、delegate、on

    1.jQuery操作DOM元素的绑定事件的四种方式 jQuery中提供了四种事件监听方式,分别是bind.live.delegate.on,对应的解除监听的函数分别是unbind.die.undele ...

  5. GIS-ArcGIS JS API FeatureLayer图层绑定事件的几种方式

    一.以下四种方式均可以 importantProvinceLayer.on("click", DoIdentify); dojo.connect(importantProvince ...

  6. jQuery绑定事件的四种方式

      jQuery提供了多种绑定事件的方式,每种方式各有其特点,明白了它们之间的异同点,有助于我们在写代码的时候进行正确的选择,从而写出优雅而容易维护的代码.下面我们来看下jQuery中绑定事件的方式都 ...

  7. jQuery绑定事件的四种方式区别

    jQuery中提供了四种事件监听方式,分别是bind.live.delegate.on,对应的解除监听的函数分别是unbind.die.undelegate.off.在开始看他们之前 一:bind(t ...

  8. Javascript绑定事件的两种方式的区别

    命名函数 <input type="button" onclick="check()" id="btn"/> <scrip ...

  9. jQuery绑定事件的四種方式

    这篇文章主要介绍的是jQuery绑定事件的四种方式相关内容,下面我们就与大家一起分享. jQuery绑定事件的四种方式 jQuery提供了多种绑定事件的方式,每种方式各有其特点,明白了它们之间的异同点 ...

随机推荐

  1. Android Baseline小tip

    转载请注明出处:http://blog.csdn.net/bbld_/article/details/40709353 Baseline Alignment

  2. Tomcat 安装与配置规范

    Tomcat 安装 演示版本:8.5.32 安装版 JDK推荐版本:jdk1.8 下载地址:https://tomcat.apache.org/download-80.cgi 安装教程 注意:tomc ...

  3. asp.net连接Access数据库实现登陆功能

    这里话就不多说了,直接演示代码. 连接access数据库首先需要配置web.config <appSettings> <add key="AccessConnString& ...

  4. DataContractAttribute.IsReference

    IsReference property in data contract It determines how objects are serialized, by default, IsRefere ...

  5. MYSQL学习拓展一:MySQL 存储过程之游标的使用!

    一.MySQL游标的概念 游标介绍: MySQL的游标(cursor)是一个重要的概念,通过查找资料与自己的理解,主要得出以下几点关于自己的理解. 有数据缓冲的思想:游标的设计是一种数据缓冲区的思想, ...

  6. Pyhton:List build-in function

    列表是Python中的可迭代对象之一,在讲列表的内建函数之前我们可以自己在IDE上看看都有那些内建函数,我们可以在pycharm中使用代码及其运行结果如下: print(dir(list)) ['__ ...

  7. 让th里面的东西自动换行

    让th里面的东西自动换行 html中的TH里面的文字不管多长,始终是一行,很烦 <th style="word-wrap:break-word;">aaaaaaaaaa ...

  8. maven实战(2)-- m2eclipse插件配置

    使用eclipse进行maven项目的开发,需要安装m2eclipse插件.下面介绍该插件的配置,插件的安装在此不作介绍. 配置m2eclipse 先决条件:已安装maven,m2eclipse 以上 ...

  9. maven 简单入门教学实战手册

    Maven那点事儿(Eclipse版)   前言: 由于最近工作学习,总是能碰到Maven的源码.虽然平时工作并不使用Maven,但是为了学习一些源码,还是必须要了解下.这篇文章不是一个全面的Mave ...

  10. Windows下findstr命令的使用

    命令:findstr 参数解释 /b          如果位于行的开头则匹配模式. /e         如果位于行的末尾则匹配模式. /l         使用文字搜索字符串. /r        ...