【问题标题】:Events on DOM elements not yet created, in Javascript?在 Javascript 中尚未创建的 DOM 元素上的事件?
【发布时间】:2010-07-13 02:41:54
【问题描述】:

我有一个 Javascript 模块如下 Javascript:

EntryController = function$entry(args) {

    MainView();

    $('#target').click(function() {
      alert('Handler called!');
    });

}

MainView() 有一个创建#target 按钮的回调。由于回调,代码将拾取并运行其余代码 $('#target') ... 在创建 #target 之前。如果是这种情况,则该事件永远不会连接到#target。如果我在 $('#target') 处放置一个断点,这将使回调有足够的时间返回并构建#target,当我按下播放时,一切都会按预期工作。

解决这个问题的最佳方法是什么?我希望所有事件都发生在控制器中,以便它可以选择将其发送到哪个视图。

我正在考虑将整个 $('#target').click ... 放在 MainView() 中,而不是 alert('Handler called!');我会引用 EntryController.TargetEventRaise(),但这开始看起来有点像稳定的代码。解决这个问题的最佳方法是什么?

【问题讨论】:

    标签: javascript jquery model-view-controller


    【解决方案1】:

    您正在寻找 jQuery 的 live event handlers,它将处理与选择器匹配的 每个 元素上的事件,无论该元素是何时创建的。

    例如:

    $('#target').live('click', function() {
        alert('Handler called!');
    });
    

    或者,您可以让MainView 函数本身接受回调,并在回调中添加处理程序。然后,您可以在其回调中调用 MainView 中的回调。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-04
      • 2019-09-21
      • 2013-02-09
      • 2010-10-14
      • 1970-01-01
      • 1970-01-01
      • 2012-07-05
      • 2014-09-29
      相关资源
      最近更新 更多