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


前一段时间面试的时候,面试官问了这么一个问题说: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可以给动态添加的元素加上绑定事件。

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM