分享

on和bind的区别,以及js重新渲染问题

 仴嗈鼋嗌鄦嶜 2020-12-16

前一段时间面试的时候,面试官问了这么一个问题说:Jquery中on和bind有什么区别?当时就一脸懵逼了,因为虽然一直用$("#id").bind("click",function(){})或者$("#id").on("click",".class",function(){})。但是真的问起来,他俩有什么区别还真的不知道。

这样,我们先从写法来看,bind后边参数一般就是绑定事件加方法;on后边的参数相比bind来说,多了一个selector。这就是他们的区别。我们可以通过几个开发中很容易遇到的情况来分析:

情况一:在一个页面上,有多个块,每个块的class是不同的,但是块中的子元素的class是相同的。这个时候你要给content1下的子元素的child绑定事件,用bind肯定是不可以的,因为这样会对所有的child元素绑定事件。但是用on就可以完美解决,给特定唯一父元素下的子元素绑定事件。

<div class="content1">
    <div class="child"></div></div><div class="content2">
    <div class="child"></div></div><div class="content3">
    <div class="child"></div></div><script>
    /*$(".child").bind("click",function () {
        //bind绑定事件
    })*/
    $(".content1").on("click",".child",function () {      
      //on绑定子元素事件    })</script>

情况二:对于动态加载的class进行绑定事件。页面对于js只在加载的时候渲染一次,用on就可以对新添加的进行重新渲染,给动态添加的也加上绑定事件。

<style>
    .show-red{
        color: red;
    }
    .show-yellow{
        color: yellow;
    }</style><div class="content1">123</div><div class="content2">456</div><script>
    $(".content1").addClass("show-red");
    $(".content2").addClass("show-yellow");    /*$(".show-red").bind("click",function () {
        //bind给show-red绑定事件
    })*/
    $(".content1").on("click",".show-red",function () {        //on给show-red绑定事件    })
    </script>

综上:on可以将子元素的事件委托给父元素进行处理;on可以给动态添加的元素加上绑定事件。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多