呈现模态视图和绑定事件的最佳实践是什么?

时间:2011-10-30 11:02:29

标签: javascript jquery ajax javascript-events modal-dialog

在一个非常常见的场景中,我有一个带有“添加”按钮的HTML页面,它打开一个模态对话框(通过Facebox),并要求用户从列表中选择一个项目。 模态对话框异步从服务器获取其HTML片段。我希望这个代码段可以在我的应用程序的许多部分重用,所以它不应该假设我使用Facebox来加载它。它应该做的唯一事情是每当用户选择其中的项目时触发item-selected事件。但由于代码段是异步加载的,因此我无法使用$(document).ready。也就是说,我无法触发这样的事件:

$(document).ready(function() {
  $(".item").click(function() {
    $(".items-modal-dialog").trigger("item-selected", this);
  });
});

另外,我真的不喜欢使用items-modal-dialog类来识别封闭的DOM元素。

我想出了一些解决方案,我想知道是否有一些我缺少的优秀模式,因为我认为这是一个非常普遍的问题。

  1. 在所有HTML之后放置脚本,所以我确信片段DOM已加载(我认为这是一种不好的做法)
  2. 创建一个JavaScript函数,该函数使用Facebox加载片段,然后绑定事件。这种方式我假设我正在使用Facebox,并且还必须为我创建的每种类型的模态对话框创建一个函数。我在这里看到的唯一积极方面是我可以通过编程方式创建items-modal-dialog DIV,因此我不必使用类来识别它。
  3. 使用jQuery live绑定事件。
  4. 使用iframe和$(document).ready
  5. 任何建议都将不胜感激。

1 个答案:

答案 0 :(得分:1)

在我看来,使用jQuery的live或delegate函数是最好的解决方案。