事件监听器删除或保留 - 最佳实践

Wic*_*312 4 javascript jquery listener

我的网页上有很多jquery/javascript监听器,我会尽可能地减少它们.然而,对于剩下的听众,有些情况我会display:none在某些点上制作它们.以下是我的问题:

1)关于听众的最佳做法是什么,我应该在显示/隐藏元素时添加或删除听众?

2)哪种表现最好?

3)如果我最终有很多听众,最好是将听众活动应用于整个身体,还是最好只将听众应用于需要听的内容?

Nij*_*kun 6

一般的经验法则如下:

拆除拆解事件.

由于您没有删除DOM元素,因此除非您拥有数十万个侦听器,否则侦听器应该保持性能,没有任何缺陷.

微观管理隐藏元素监听器所花费的时间不足以超过任何感知到的性能提升.


  1. 删除元素(拆除)时删除侦听器.
  2. 侦听应用于多个元素而不是单个元素的泛型类,如果需要,使用数据属性来标识它们.
  3. 倾听需要倾听的事情.

当您有大量需要通过监听父级监听的子级时,您还可以使用事件委派(冒泡):

$('div').on('click', function (e) {
  // check e.target for specific child node you require listening on
})
Run Code Online (Sandbox Code Playgroud)