jquery中bind和on的区别
1.首先,来看看bind和on的语法。
bind的用法:
$('a').bind('click',[data],function(){})
其事件的绑定者是固定的,就是a,第一个参数是事件,第二个参数可选,是要传递给回调函数的event.data参数,第三个参数是回调函数。例如:
on的用法:
on:$('body').on('click','a',[data],function(){})
相比于bind,除了事件的绑定者(这边是body),在on的参数中还增加了一个选择器a,而事件将作用于这个a上面。
2.区别
正是由于on函数的参数中多出了一个选择器a,因此我们可以为动态生成的元素也绑定事件。而bind则做不到。
如下例子。
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
</ul>
<script>
$(function () {
$('ul li').on('click',function(){
alert($(this).text())
});
})
</script>
<script>
$(function () {
$('ul li').bind('click',function(){
alert($(this).text())
});
})
</script>
上述代码用bind和on都没有什么区别。
但是假如我们动态再生成一个li,则bind方法对这个新生成的li就不起作用,只能用on方法。
以下这种写法不适用了
<script>
// 这种情况你会发现点击第四个不具备事件.也就是不具备动态绑定事件能力
$(function () {
$('ul li').bind('click',function(){
alert($(this).text())
});
var ok = $('<li>4</li>');
$('ul').last().append(ok); })
</script>
必须使用如下这种方式
<script>
// 换成on的写法,添加selector属性,就是通过事件冒泡,进行了事件委托,把li的事件委托给其父元素,点击后面加入的li就默认绑定了事件
$(function () {
$('ul').on('click','li',function(){
alert($(this).text())
});
var ok = $('<li>4</li>');
$('ul').last().append(ok);
})
</script>
所以总的来说,on可以通过委托给父元素的方法,为动态加入的子元素来添加事件。
我们经常用的$("body").on("clikc",function(){});就是把事件都委托给了最顶层的父元素body。
jquery中bind和on的区别的更多相关文章
- Jquery中bind和live的区别
Jquery中绑定事件有三种方法:以click事件为例 (1)target.click(function(){}); (2)target.bind("click",function ...
- jQuery 中bind(),live(),delegate(),on() 区别(转)
当我们试图绑定一些事件到DOM元素上的时候,我相信上面这4个方法是最常用的.而它们之间到底有什么不同呢?在什么场合下用什么方法是最有效的呢? 准备知识: 当我们在开始的时候,有些知识是必须具备的: D ...
- 转 jQuery 中bind(),live(),delegate(),on() 区别
当我们试图绑定一些事件到DOM元素上的时候,我相信上面这4个方法是最常用的.而它们之间到底有什么不同呢?在什么场合下用什么方法是最有效的呢? 准备知识: 当我们在开始的时候,有些知识是必须具备的: D ...
- jquery实现input输入框实时输入触发事件代码 ---jQuery 中bind(),live(),delegate(),on() 区别
复制代码 代码如下: <input id="productName" name="productName" value="" /> ...
- jQuery中.bind() .live() .delegate() .on()区别
$(selector).bind(event,data,function) $(selector).live(event,data,function)//jquery1.9版本以下支持,jquery1 ...
- jQuery 中bind(),live(),delegate(),on() 区别
on()来改写通过 .bind(), .live(), .delegate()所注册的事件 /* The jQuery .bind(), .live(), and .delegate() method ...
- jQuery中bind方法和live方法区别解析
Javascript中的事件有它的独特性,有默认的执行事件,例如冒泡就是其中的一个.在很多比较复杂的应用程序中,停止事件的冒泡或捕获在程序开发当中是十分有用的,而在IE中有它的独特方式来阻止事件的冒泡 ...
- 【jQuery】【转】jQuery中的trigger和triggerHandler区别
trigger(event, [data]) 在每一个匹配的元素上触发某类事件. 这个函数也会导致浏览器同名的默认行为的执行.比如,如果用trigger()触发一个'submit',则同样会导致浏览器 ...
- jquery中attr和prop的区别、 什么时候用 attr 什么时候用 prop (转自 芈老头 )
jquery中attr和prop的区别. 什么时候用 attr 什么时候用 prop 在高版本的jquery引入prop方法后,什么时候该用prop?什么时候用attr?它们两个之间有什么区别?这 ...
随机推荐
- fromkeys()
#fromkeys() #说明:用于创建一个新字典,以序列seq中元素做字典的键,value为字典所有键对应的初始值 #案例 d=[1,2,3] dict={} dict=dict.fromkeys( ...
- MVC 中Scripts.Render、Styles.Render
在ASP.NET MVC项目中,可以在视图中利用Scripts.Render.Styles.Render统一加载js.css文件,需要利用BundleConfig类来Add 各种Bundle,例如:b ...
- 查看mysql的版本号
查看mysql的版本号 1.1 在命令行登录mysql,即可看到mysql的版本号 [root@heyong ~]# mysql -uroot -p Enter password: Welcome t ...
- 【java】static用法
static作用: 用来修饰函数成员,成员变量和成员函数.类对象的属性都一致且能共享,比如国籍,这就能用static修饰,name不能共享,因为每个人都有自己的名字. 特有内容(name)随着对象存储 ...
- Linux 释放cache化缓存
Linux 释放cache化缓存 free -g查看空余内存以及已使用内存 原文 https://blog.csdn.net/tomspcc/article/details/78131468 机械硬 ...
- problem:vue组件局部刷新,在组件销毁(destroyed)时取消刷新无效问题
场景: 一个群发消息列表(数组) 列表下有多条消息(元素) 每条正在发送的消息数据状态需要实时刷新,发送完成时需要显示成功提示符合且不需要刷新,然后3秒消失.首次显示列表时,已经成功的状态不显示这个成 ...
- 使用虚拟化KVM安装RHEL7系统
使用虚拟化KVM安装RHEL7系统 作者:Eric 微信:loveoracle11g 检查真实物理机是否支持虚拟化功能 [root@server ~]# grep vmx /proc/cpuinfo ...
- [编程小技巧]Notepad++中如何实现文本对比功能?
1.打开Notepad++插件中心 2.安装Compare 3.按提示重启Notepad++ 4.点击Compare比较临近的两个文件 5. 取消比较 6 Comp ...
- NodeJS学习之win10安装与sublime配置
Window 上安装Node.js Node.js安装包及源码下载地址为:https://nodejs.org/en/download/ 下载安装就行了,安装node会同时安装npm. sublime ...
- PHP常用的转义函数
1. addslashes addslashes对SQL语句中的特殊字符进行转义操作,包括(‘), (“), (), (NUL)四个字符,此函数在DBMS没有自己的转义函数时候使用,但是如果DBMS有 ...