高端JavaScript应用程序和事件

时间:2015-04-15 12:31:21

标签: javascript jquery event-delegation

我试图找到一个符合我想要答案的上下文的标题。 我自己解释一下。

在编写了数千条javascript代码行(有或没有jquery)后,我终于问自己我做错了。 主要是感谢jQuery添加事件/委托给一个元素非常容易,但所有的例子都很安静“简单”;意思是它没有考虑到你有一个完整的列表,按钮,动态的东西......

所以我的问题是: 再一次为一个复杂的网站,拥有数百个动态页面,ajax导航,数百万用户...


  1. 放置一个全局监听器(正文或其他什么)并让所有事件都冒出来是否有任何优势(除了简单性)? 当我看到棱角分明时,似乎他们全球都在听'敲击',但我可能会误解。
  2. Contexte

    <body>
      <div>
       <ul>
         <li><span click="myFunc"></span></li>
       </ul>
      </div>
     </body>
    

    -

    Sidenot:我正在使用jQuery进行演示/简单,但这是关于js的全局问题

    // Standard binding example
    $('span').on('click', func)
    

    VS

    // Standard delegation example
    $('ul').on('click', 'span', func)
    

    VS

    // Dispatcher for 'block'
    $('ul').on('click', localDispatcher)
    

    VS

    // One (and only one) Global Listener for all click
    $(body).on('click', globalDispatcher)
    

    通过这个例子,需要手动放置3个第一个,在这个页面的专用js上。 VS 最后一个只是一个简单的事件监听器,它将使用click属性进行调度,并且可以只设置一次。

    我发现最后一个非常酷,因为它消除了管理点击/选择器/ dom管理的所有麻烦。当我更改页面(ajax导航)时,我没有.off每个监听器。 但我想知道性能或者我可以考虑的另一个问题(这就是我问这个问题的原因:D)。 我真的很想知道“大型网络创业公司”如何管理这种Javascript。

    谢谢:)

1 个答案:

答案 0 :(得分:1)

我会拒绝全球听众,因为一旦应用程序变得相当大,它会让人感到非常困惑和令人沮丧。 此外,表现应该非常糟糕,因为你涉及的元素会被忽略 因此,如果您希望将来对自己感觉良好,请坚持使用元素或块级事件委派!