• 深入理解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()是无法实现阻止事件的传递或者冒泡的

  • 相关阅读:
    LeetCode 453 Minimum Moves to Equal Array Elements
    LeetCode 112 Path Sum
    LeetCode 437 Path Sum III
    LeetCode 263 Ugly Number
    Solutions and Summay for Linked List Naive and Easy Questions
    AWS–Sysops notes
    Linked List
    All About Linked List
    datatable fix error–Invalid JSON response
    [转]反编译c#的相关问题
  • 原文地址:https://www.cnblogs.com/good10001/p/4784654.html
Copyright © 2020-2023  润新知