1

我有一个分类按钮,我希望能够将它放在我网站的任何位置,并让 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')

4

1 回答 1

0

在模态初始化到模态本身之后,我将附加模态的处理程序,您可以将其附加为

$('#modal .targetClass');

对于其余的按钮,我想包含最高的父级会这样做。在我正在进行的当前项目中,我们有一个 div,其中包含除页眉和页脚之外的所有正文内容。这是我用来附加可能出现在其中任何地方的杂项类的东西。

我认为最好单独保留模态,因为有时模态是身体的直接子级,因此您需要针对整个身体以包含模态。此外,模态可能不会经常使用,所以我认为在身体上附加一些可能不会每次都出现的模态是一种浪费。

于 2013-08-15T15:25:09.697 回答