我有一个分类按钮,我希望能够将它放在我网站的任何位置,并让 jQuery 为其附加一个事件处理程序。由于其中一些按钮可能会在初始页面加载后添加到 DOM,因此我需要将事件处理程序的范围限定为父选择器,并在父范围内侦听我的分类按钮。
示例(在 CoffeeScript 中):
@$body = $('body')
@$body.on 'click', '.pay-button', @handlePayButton
handlePayButton: (e) =>
/* Do something */
这显然不是非常有效,因为它需要监听 中的每一次点击@$body
,所以最好将其范围限定为更具体的内容:
@$contentPage = $('#content-page')
@$contentPage.on 'click', '.pay-button', @handlePayButton
handlePayButton: (e) =>
/* Do something */
但是,我希望能够在模态窗口中使用这个分类按钮,该按钮既可以在初始加载后添加到 DOM 中,也可以在@$contentPage
.
将范围保留在较低的特异性(即:)是否更有效@$body
,或者只是有两个正在寻找此类的范围:
@$contentPage = $('#content-page')
@$modal = $('#modal')
@$contentPage.on 'click', '.pay-button', @handlePayButton
@$modal.on 'click', '.pay-button', @handlePayButton
handlePayButton: (e) =>
/* Do something */
或者,在模态初始化程序中添加一个新的侦听器是否有意义,直接将事件处理程序添加到$('.pay-button')
?