在Javascript中尚未创建的DOM元素上的事件?

时间:2010-07-13 02:41:55

标签: javascript jquery model-view-controller

我有一个Javascript模块以下Javascript:

EntryController = function$entry(args) {

    MainView();

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

}

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

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

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

1 个答案:

答案 0 :(得分:2)

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

例如:

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

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