$(document).on();用于动态绑定事件

 jQuery的出现,大大简化了对dom的操作,但是如果不是仔细阅读api和进行操作,就不知道其中最大的优点和使用方式。就拿$().click()和$(document).on('click','要选择的元素',function(){})来说,都是点击事件的操作,但是也有不同的地方。
  1. $(选择器).click(fn)
    
当选中的选择器被点击时触发回调函数fn。只针对与页面已存在的选择器。

<body>
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
</ul>
<script src="jquery.min.js"></script>
<script>
$(function(){
$('ul>li').click(function(){
console.log($(this).html());
});
$('ul').append('<li>5</li><li>6</li>');
})
</script>
</body>

结果如下: 后面动态创建的5和6,没法进行点击事件触发

  2.$(document).on('click','要选择的元素',function(){})
   
 on方法包含很多事件,点击,双击等等事件。和$().click()的用法一样,最大的区别即优点是如果动态创建的元素在该选择器选中范围内是能触发回调函数。

<body>
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
</ul>
<script src="jquery.min.js"></script>
<script>
$(function(){
$('body').on('click','ul>li',function(){
console.log($(this).html());
});
$('ul').append('<li>5</li><li>6</li>');
})
</script>
</body>

结果如下: 动态添加的元素也能被点击触发函数

$().on()的知识点补充:
  1.从jQuery 1.7开始,on()函数提供了绑定事件处理程序所需的所有功能,用于统一取代以前的bind()、 delegate()、 live()等事件函数。
    $().bind()直接绑定在元素上,和click,blur,mouseon一样的点击事件。
    $().live()是通过冒泡的方式来绑定到元素上的。更适合列表类型的,绑定到document DOM节点上。
    $().delegate()是更精确的小范围的使用事件代理。
   $().on()结合了这三个方法的优势摒弃了劣势。

  2.该函数可以为同一元素、同一事件类型绑定多个事件处理函数。触发事件时,jQuery会按照绑定的先后顺序依次执行绑定的事件处理函数。
  3. 阻止事件冒泡和事件委托的方法:
    A:return false。 
      在事件的处理中,可以阻止默认事件和冒泡事件。

    B:event.preventDefault()
      在事件的处理中,可以阻止默认事件但是允许冒泡事件的发生。

    C:event.stopPropagation().。
      在事件的处理中,可以阻止冒泡但是允许默认事件的发生。

    

随机推荐

  1. week5 作业

    week5 作业 1.描述GPT是什么,应该怎么使用? 描述GPT之前要简单了解MBR分区,MBR(Main Boot Record)叫做主引导记录,其位于磁盘的最前端,由一段代码组成,共占用512个 ...

  2. Understand RNN with TensorFlow in 7 Steps

    待翻译 https://medium.com/@erikhallstrm/hello-world-rnn-83cd7105b767

  3. 为什么要使用 Go 语言,Go 语言的优势在哪里?

    1.Go有什么优势 可直接编译成机器码,不依赖其他库,glibc的版本有一定要求,部署就是扔一个文件上去就完成了. 静态类型语言,但是有动态语言的感觉,静态类型的语言就是可以在编译的时候检查出来隐藏的 ...

  4. C++二维数组名的再探索

    #include <iostream> int main() { ][] = { , , , , , , , , , , , }; //输出 0,1,2,3,4,5,6,7,8,9,10, ...

  5. jquery数组的合并 对象的合并

    直接转自:https://www.cnblogs.com/ooo0/p/7737678.html 1.数组的合并 1.1 concat方法 var a=[1,2,3],b=[4,5,6]; var c ...

  6. leetcode-easy-listnode-21 merge two sorted lists

    mycode 一定要记得创建两个头哦,一个找路,一个找家 # Definition for singly-linked list. # class ListNode(object): # def __ ...

  7. c# 单元测试 ,对静态方法(static)和私有方法(private) 进行单元测试

    利用反射: /// <summary> /// 调用静态方法 /// </summary>akf /// <param name="t">类全名 ...

  8. React之defaultProps、propTypes

    1.新增知识点 /** React中的组件: 解决html 标签构建应用的不足. 使用组件的好处:把公共的功能单独抽离成一个文件作为一个组件,哪里里使用哪里引入. 父子组件:组件的相互调用中,我们把调 ...

  9. C# 实现播放RTSP 标准协议码流播放

    http://www.codeproject.com/Articles/507218/Managed-Media-Aggregation-using-Rtsp-and-Rtphttp://www.st ...

  10. oracle 12 安装

    oracle 12 第二版本安装 下载地址  https://www.oracle.com/technetwork/cn/middleware/webcenter/content/downloads/ ...