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?它们两个之间有什么区别?这 ...
随机推荐
- java初始重点语法
第三章 if基本语法: if(条件){// 表达式 // 代码块 } eg: int a = 10; if(a > 1){ System.out.println("内容"); ...
- 重读 谢希仁《计算机网络》3 - 网络层和IP协议
- 用virtualenv建立独立虚拟环境 批量导入模块信息
pip3 install virtualenv mkdir env/env1 source bin/activate pip3 freeze >requirements.txt or pipre ...
- oracle-data-mining
create user datamine identified by 123456 QUOTA UNLIMITED ON users; 然后在sqldeveloper工具界面-data miner中, ...
- 账户和联系人 Accounts and Contacts 译
原文链接: https://crmbook.powerobjects.com/basics/searching-and-navigation/understanding-accounts-and-co ...
- Java注解总结2
注解是Java元数据,可以理解成代码的标签,正确使用能极大的简化代码的编写逻辑,在各种框架代码中使用也越来越多. 一.注解的应用场景 生成doc文档: 编译器类型格式检查: 运行时处理如注入依赖等 二 ...
- 我发起了一个 操作系统 GUI 和 Tcp / IP 包 的 开源项目 DeviceOS
操作系统 如果 不需要 处理 复杂多样 的 硬件 兼容性, 其实 并不算 大项目, 可以算 毕业设计 . 但是, GUI 和 Tcp / IP 这两个 部分 的 实现逻辑 很多 很复杂, 这 2 ...
- C166 -MDH
Writing a C logic for moving MDH register contents after MUL instruction http://www.keil.com/forum ...
- svn安装和使用
https://www.cnblogs.com/webStyle/p/3696003.html
- KMS服务器激活WIN方法
KMS激活的过程简单说就是:欲激活的电脑向KMS服务器请求,KMS服务器做出回应同意激活. KMS激活软件是将KMS服务器用一段代码来模拟,做成一个可执行的程序(即所谓的KMS伺服器).KMS激活软件 ...