jQuery的区别:$().click()和$(document).on('click','要选择的元素',function(){})的不同

本文深入探讨了jQuery中事件绑定的方法,对比分析了$(选择器).click(fn)与$(document).on('click', '要选择的元素', function(){}

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文章作者:热爱前端的17号诶
文章地址:https://www.cnblogs.com/sqh17/p/7746418.html

解决:动态创建的元素的事件绑定不上

jQuery的区别: ( ) . c l i c k ( ) 和 ().click()和 ().click()(document).on(‘click’,‘要选择的元素’,function(){})的不同

前言

jQuery的出现,大大简化了对dom的操作,但是如果不是仔细阅读api和进行操作,就不知道其中最大的优点和使用方式。就拿 ( ) . c l i c k ( ) 和 ().click()和 ().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>

结果如下: 动态添加的元素也能被点击触发函数。
在这里插入图片描述

知识补充

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

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值