我有一个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()的引用,但开始看起来有点像稳定的代码。什么是解决这个问题的最佳方法?
答案 0 :(得分:2)
您正在寻找jQuery的live
event handlers,它将处理与选择器匹配的每个元素上的事件,无论元素何时被创建。
例如:
$('#target').live('click', function() {
alert('Handler called!');
});
或者,您可以使MainView
函数本身进行回调,并在回调中添加处理程序。然后,您可以在其回调中的MainView
内调用回调。