性能:jquery.live()与按需创建特定侦听器?

性能:jquery.live()与按需创建特定侦听器?,jquery,Jquery,我有一个带有新闻标题的页面,单击每个页面,ajax将加载完整的新闻项目,包括照片缩略图。我想在缩略图上附加一个灯箱,以显示更大的照片 我有两个选择(我认为): .live() 在回调新闻项时添加基于特定id的侦听器单击 在.live()中,您有一个监听器绑定,而不是n事件监听器绑定,因此如果您有: 大量元素或动态创建/加载的元素 DOM中的嵌套不是太深,或者是太深,但是有很多元素(这里的成本/收益比) 在您的情况下,我将使用如下: $('div.news_item').live('click

我有一个带有新闻标题的页面,单击每个页面,ajax将加载完整的新闻项目,包括照片缩略图。我想在缩略图上附加一个灯箱,以显示更大的照片

我有两个选择(我认为):

  • .live()
  • 在回调新闻项时添加基于特定id的侦听器单击
  • .live()
    中,您有一个监听器绑定,而不是
    n
    事件监听器绑定,因此如果您有:

  • 大量元素或动态创建/加载的元素
  • DOM中的嵌套不是太深,或者是太深,但是有很多元素(这里的成本/收益比)
  • 在您的情况下,我将使用如下:

    $('div.news_item').live('click', function(){ });
    
    <div id="newsItems">
      <div class="news_item">News 1</div>
      <div class="news_item">News 2</div>
    </div>
    
    或者,如果您的
    class=“news\u item”
    元素位于容器中,您可以这样选择:

    $('div.news_item').live('click', function(){ });
    
    <div id="newsItems">
      <div class="news_item">News 1</div>
      <div class="news_item">News 2</div>
    </div>
    
    注意:函数中的代码仍然是相同的,
    $(此)
    仍然使用这两个选项中的任何一个指向相同的元素。

    .live()
    中,您有一个侦听器,而不是
    n
    事件侦听器绑定,因此如果您有:

  • 大量元素或动态创建/加载的元素
  • DOM中的嵌套不是太深,或者是太深,但是有很多元素(这里的成本/收益比)
  • 在您的情况下,我将使用如下:

    $('div.news_item').live('click', function(){ });
    
    <div id="newsItems">
      <div class="news_item">News 1</div>
      <div class="news_item">News 2</div>
    </div>
    
    或者,如果您的
    class=“news\u item”
    元素位于容器中,您可以这样选择:

    $('div.news_item').live('click', function(){ });
    
    <div id="newsItems">
      <div class="news_item">News 1</div>
      <div class="news_item">News 2</div>
    </div>
    

    注意:函数中的代码仍然是相同的,
    $(此)
    仍然指向与这两个选项中的任何一个相同的元素。

    一般来说,我们在这里讨论的新闻项目有多少?您是否考虑过
    委托
    ,它基本上做着与live相同的事情,只是效率更高,使用起来有点困难大约100-150条显示我们在这里谈论的许多新闻项目,一般来说?你有没有考虑过
    委托
    ,它基本上做同样的事情,比如更有效地直播,使用起来有点困难,大概在100-150左右items@NickCraver+1非常好的解释,因为alwaysso 1x loose。主体(.live())或更本地化的元素(.delegate())上的类侦听器将比6(用户将单击的新闻项的平均数量)更有效在回调中添加了特定的基于ID的侦听器?@Haroldo-有点…这里有很多因素,例如,在父对象上是否有单击处理程序等。但是…无论他们是否单击,您都在装配单击事件,因此单击多少无关紧要,这是启动时间,您将在大量元素中使用。根据您对100-150项的评论,是的
    .live()
    或更好的
    .delegate()
    更好/更有效。非常好,谢谢nick。我一直在使用.live(),但我想几个body侦听器肯定比100个元素侦听器更好。谢谢again@NickCraver+1非常好的解释,因为总是有1x松动。主体(.live())或更本地化的元素(.delegate())上的类侦听器将比6(用户将单击的新闻项的平均数量)更有效。回调时添加的基于ID的特定侦听器?@Haroldo-Kinda…这里有很多因素,例如,在父对象上有单击处理程序,等等。但是……无论他们是否单击,您都在装配单击事件,因此他们单击多少并不重要,您将在启动时使用大量元素。根据您对100-150项的评论,是的
    .live()
    或更好的
    .delegate()
    更好/更有效。非常好,谢谢nick。我一直在使用.live(),但我想几个body侦听器肯定比100个元素侦听器更好。再次感谢