这两种写法有啥区别吗?

这两种写法有啥区别吗?

$('.bind').click(function(){
$(document).on('click','.obj',flash);
})

$('.bind').click(function(){
$('.obj').on('click',flash);
})

两种写法有啥区别吗

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学,你好。

拿上一条回复中的代码例子为例,当html中目前有p标签的话,也就是上条回复中的代码那样的情况,直接给p添加事件和给父元素委托都是可以的,甚至直接添加会更简单。

但是为什么还要发明委托呢,在实际的工作中,很多元素都是从后台获取的,比如三个p标签,只是里面的内容不同,那么我们就可以通过js循环把p标签渲染到页面中,就不用写三遍p标签了,甚至有的时候你都不知道有几个p标签,那更不能一个一个写了。但是不管这三个p抱歉是通过js追加到div上的,还是直接写在html中的,我们都的给他太那几事件,假如我们直接给p添加事件,这个时候页面中是没有p标签的,所以我们选的话选不到,就会报错,通常这种情况下我们就会用这个事件委托的方式去做,就不会报错了。

如果帮助到了你,欢迎采纳!

祝学习愉快!

Miss路 2019-06-07 11:00:11

同学,你好。

on('click','.obj',flash);这种写法中间多了个参数,这个参数是个选择器,表示obj是bind的子元素,这个事件是给子元素添加的,这也叫事件委托,把自己的事件,委托给了父元素。

下面的没有obj选择器的就是给本身添加事件。

举个例子你试一下,不写aa,和写aa的区别,当不写aa的时候,只要点击框中的任何一个地方,都会弹出,写了aa之后,只有点击p标签才会弹出。

<!DOCTYPE html>
<html>

<head>
<style type="text/css">
    .p{
        width: 500px;
        height: 500px;
        border: 1px solid red;
    }
</style>
    <script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js">
    </script>
    <script>
    $(document).ready(function() {
        $(".p").on("click", ".aa",function() {
            alert("okok");
        });
    });
    </script>
</head>

<body>
    <div class="p">
        <p class="aa">aaaaa</p>
        <p class="aa">bbbbb</p>
        <p class="aa">ccccc</p>
    </div>
</body>

</html>

建议同学以后再遇到不懂的,可以通过写代码就能了解到的,就动手实现以下。

如果帮助到了你,欢迎采纳!

祝学习愉快!


  • 提问者 cjq6502 #1
    请问一下“给document添加事件,把document事件委托给aa元素”与“直接给aa添加事件”的区别。。。不是“是否有添加被委托的元素”
    2019-06-07 14:17:14
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
2.组件化网页开发
  • 参与学习           人
  • 提交作业       1121    份
  • 解答问题       14456    个

本阶段在运用JS实现动态网页开发的基础上,带你深入理解企业开发核心思想,完成一个企业级网页的开发,体验前端工程师的成就感。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师