zoukankan      html  css  js  c++  java
  • jquery中的bind()、live()的区别与使用(事件处理)

    使用jquery有一段时间了,刚开始看别人的源代码的时候对事件的绑定方法有疑惑。比如:

    var btn=$("#button"); 
     btn.click(function(){ 
     alert("I have been clicked!"); 
     }); 

    这就绑定了一个click事件。

    1.bind()方法解析

    但后来发现jqueryAPI里面还有bind方法,一直没有使用过,查看API的使用方法:

    $("p").bind("click", function(){
      alert( $(this).text() );
    });

    同时绑定多个事件类型

    $('#foo').bind('mouseenter mouseleave', function() {
      $(this).toggleClass('entered');
    });

    注意:事件类型名称用空格隔开,使用场景:多个事件类型做同一个动作时使用。

    相对于直接注册事件,bind()方法可以绑定多个事件,相同之处是都是绑定在目标对象上面,这个方法是存在最久的,而且也很好的解决了浏览器在事件处理中的兼容问题

    注意如果父层有绑定事件的情况下,需要阻止一下冒泡,e.stopPropagation()和e.cancellBubble().

    2.live()方法解析

    使用情况如下:

    $('#foo').live('click', function() {
      $(this).toggleClass('entered');
    });//.live()方法用到了事件委托的概念来处理事件的绑定。

    live()方法用到了事件委托的概念来处理事件的绑定。它和用.bind()来绑定事件是一样的。区别之处在于:

    live()总是找到事件对象(event.target)的顶级元素(document),并在document节点上进行事件绑定,通过事件冒泡的机制进行事件委派,使用时只需要定义一次,可以满足所有符合要求的事件对象,使用环境是多个对象做同一个类型的事情的时候,比如要让所有的元素弹出自己的ID 代码如下:

    <div id="parent">
                <div id="son">
                    <div id="grandson">
                        fffffffff
                    </div>
                </div>          
     </div>

    我们现在要让三个div都要弹出自己的ID

    JS代码如下:

    $("#parent").live("click",function(){
         alert($(this).id);     
    })        
  • 相关阅读:
    批量修改数据后应收集统计信息
    this,this,再次讨论javascript中的this,超全面
    javascript中的闭包,超简单论述,保证小学生必懂
    有四中方法可以实现PHP的伪静态,你造吗?
    javascript 事件传播与事件冒泡,W3C事件模型
    浅谈asp.net性能
    div浮动层 兼容IE FF
    我们这些程序员
    c++学习笔记_1
    windows下hexo+github搭建个人博客
  • 原文地址:https://www.cnblogs.com/gruguy/p/jungle_chang.html
Copyright © 2011-2022 走看看