Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么';这是jQuery.live()和.on()之间的区别_Jquery_Jquery 1.7 - Fatal编程技术网

什么';这是jQuery.live()和.on()之间的区别

什么';这是jQuery.live()和.on()之间的区别,jquery,jquery-1.7,Jquery,Jquery 1.7,我发现在jQuery1.7中有一个新方法.on(),它取代了早期版本中的.live() 我很想知道它们之间的区别以及使用这种新方法的好处。请参阅 […]新的.on()和.off()API统一了所有连接方式 将事件添加到jQuery中的文档中-并且它们的键入时间更短![……] 很明显,为什么你不想使用live。正如Felix所提到的,.on是附加事件的一种更加精简的方式 此后,不再建议使用.live()方法 jQuery的版本提供了更好的方法,而这些方法没有它的特性 缺点。特别是,使用 .live

我发现在jQuery1.7中有一个新方法
.on()
,它取代了早期版本中的
.live()

我很想知道它们之间的区别以及使用这种新方法的好处。

请参阅

[…]新的.on()和.off()API统一了所有连接方式 将事件添加到jQuery中的文档中-并且它们的键入时间更短![……]

很明显,为什么你不想使用live。正如Felix所提到的,
.on
是附加事件的一种更加精简的方式

此后,不再建议使用.live()方法 jQuery的版本提供了更好的方法,而这些方法没有它的特性 缺点。特别是,使用 .live():

  • jQuery在调用
    .live()
    方法之前尝试检索选择器指定的元素,该方法可能是 处理大型文档非常耗时
  • 不支持链接方法。例如,
    $(“a”).find(“.offsite,.external”).live(…)是
    无效,无法按预期工作
  • 由于所有
    .live()
    事件都附加在
    文档
    元素上,因此事件花费的时间最长、速度最慢 处理它们之前的可能路径
  • 召唤 在中,事件处理程序在停止事件处理程序时无效 附在文件下方;事件已传播到
    文档
  • .live()
    方法以令人惊讶的方式与其他事件方法交互,例如。,
    $(文档)。取消绑定(“单击”)
    删除所有单击处理程序 通过调用
    .live()
    附加

引用上述链接

有什么问题吗

此后,不再建议使用.live()方法 jQuery的版本提供了更好的方法,而这些方法没有它的特性 缺点。特别是,使用 .live():

  • jQuery尝试检索选择器指定的元素 在调用.live()方法之前,这可能会在 大型文件
  • 不支持链接方法。例如 $(“a”).find(“.offsite,.external”).live(…);是无效的,不存在 没有按预期工作
  • 因为所有.live()事件都附加在 文档元素,事件采用最长和最慢的可能路径 在他们被处理之前
  • 在事件中调用event.stopPropagation() 处理程序在停止中较低级别的事件处理程序时无效 文件;事件已传播到文档
  • .live()方法与其他事件方法的交互方式可以是 令人惊讶,例如,$(文档)。取消绑定(“单击”)将删除所有单击 通过调用.live()附加的处理程序
    我是一个使用jQuery的Chrome扩展的作者,还有一个使用
    .live()
    。扩展的工作方式是使用。
    live()
    将侦听器附加到所有文本区域-这很有效,因为每当文档更改时,它仍然会将侦听器附加到所有新的文本区域


    我转到了
    .on()
    ,但效果不太好。每当文档发生更改时,它都不会附加侦听器,因此我已恢复使用
    .live()
    。我猜这是
    .on()
    中的一个bug。我想你要小心点

    .live()
    移动到
    .on()
    时,人们偶然发现的一个区别是,将事件绑定到动态添加到DOM的元素时,
    .on()
    的参数略有不同

    下面是我们用于
    .live()
    方法的语法示例:

    $('button').live('click', doSomething);
    
    function doSomething() {
        // do something
    }
    
    $(document).on('click', 'button', doSomething);
    
    function doSomething() {
        // do something
    }
    
    现在,jQuery 1.7版中不推荐使用
    .live()
    ,1.9版中删除了
    .on()
    方法。下面是一个使用
    .on()
    方法的等效示例:

    $('button').live('click', doSomething);
    
    function doSomething() {
        // do something
    }
    
    $(document).on('click', 'button', doSomething);
    
    function doSomething() {
        // do something
    }
    
    请注意,我们是针对文档而不是按钮本身调用
    .on()
    。我们在第二个参数中为正在侦听其事件的元素指定选择器

    在上面的示例中,我正在对文档调用
    .on()
    ,但是如果使用更靠近选择器的元素,您将获得更好的性能。只要在调用
    .on()
    之前页面上存在任何祖先元素,它就可以工作


    这已经解释过了,但很容易遗漏。

    我需要识别浏览器关闭事件。在做了大量的研究之后,我使用jQuery 1.8.3做了以下工作

  • 单击超链接时,使用以下jQuery打开标志

    $('a').live('click',function(){cleanSession=false;})

  • 在单击submit的任何输入按钮类型时,使用以下jQuery打开标志

  • $(“输入[type=submit]”。live('click',function(){alert('input button clicked');cleanSession=false;})

  • 当表单提交发生时,使用以下jQuery打开一个标志
  • $('form').live('submit',function(){cleanSession=false;})

    现在重要的是…我的解决方案只有在我使用的情况下才有效。改为生活。继续。如果我使用.on,那么在表单提交之后就会触发事件,这已经太晚了。我的表单多次使用javascript调用(document.form.submit)提交


    因此,.live和.on之间有一个关键区别。如果您使用.live,您的事件会立即被触发,但如果您切换到.on,则不会按时触发。

    有关详细信息,请查看。。及

    .live()方法用于处理内容的动态生成。。。就像我在程序上创建的那样,当我更改Jquery滑块的值时,会添加一个选项卡,并且我希望将关闭按钮功能附加到每个需要关闭的选项卡上
    $( "#someid" ).live( "click", function() {
      console.log("live event.");
    });
    
    .on()
    
    $( "#someid" ).on( "click", function() {
      console.log("on event.");
    });