zoukankan      html  css  js  c++  java
  • 深入理解jQuery中live与bind方法的区别

    本篇文章主要是对jQuery中live与bind方法的区别进行了详细的分析介绍,需要的朋友可以过来参考下,希望对大家有所帮助

    注意如果是通过jq添加的层和对象一定要用live(),用其他的都不起作用

    live的缺点就是,运行完以后不释放空间,太多的使用会占用更多的内存,bind()则点击完以后释放空间

    区别一:

    Click here

    可以给这个元素绑定一个简单的click事件:

    $('.clickme').bind('click', function() {
    $('body').append('
    
    Another target
    ');
    });
    

      

    当点击了元素,就会弹出一个警告框。然后,想象一下这之后有另一个元素添加进来了。

    尽管这个新的元素也能够匹配选择器 ".clickme" ,但是由于这个元素是在调用 .bind() 之后添加的,所以点击这个元素不会有任何效果。

    .live() 就提供了对应这种情况的方法。如果我们是这样绑定click事件的:

    $('.clickme').live('click', function() {
    alert("Live handler called.");
    });
    

      

    然后再添加一个新元素:

    $('body').append('
    
    Another target
    ');
    

      

    然后再点击新增的元素,他依然能够触发事件处理函数。

    区别二:

    (1)bind方法可以绑定任何JavaScript的事件,而live方法在jQuery1.3的时候只支持click, dblclick, keydown, keypress,keyup,mousedown, mousemove, mouseout, mouseover, 和 mouseup.在jQuery 1.4.1中,甚至也支持 focus 和 blue事件了(映射到更合适,并且可以冒泡的focusin和focusout上)。另外,在jQuery 1.4.1中,也能支持hover(映射到"mouseenter mouseleave")。

    (2)live() 并不完全支持通过DOM遍历的方法找到的元素。取而代之的是,应当总是在一个选择器后面直接使用 .live()方法。

    (3)当一个元素采用live方法进行事件的绑定的时候,如果想阻止事件的传递或冒泡,就要在函数中return false,仅仅调用stopPropagation()是无法实现阻止事件的传递或者冒泡的

  • 相关阅读:
    vue中select设置默认选中
    验证码
    JS图片src转义
    int main(int argc, char** argv) 以及CommandLineParser
    Visual Studio2013 配置opencv3.3.0 x64系统
    ubuntu16.04 下安装 visual studio code 以及利用 g++ 运行 c++程序
    第三次作业
    第二次作业
    作业一
    第四次作业
  • 原文地址:https://www.cnblogs.com/good10001/p/4784654.html
Copyright © 2011-2022 走看看