我有一个 Javascript 模块,包含以下 Javascript:
EntryController = function$entry(args) {
MainView();
$('#target').click(function() {
alert('Handler called!');
});
}
MainView() 有一个创建#target 按钮的回调。由于回调,代码将在创建#target 之前获取并运行代码 $('#target') ... 的其余部分。如果是这种情况,事件永远不会连接到#target。如果我在 $('#target') 处放置一个断点,这将为回调提供足够的时间来返回并构建 #target,当我按下播放时,一切都会按预期进行。
处理此问题的最佳方法是什么?我希望所有事件都发生在 Controller 中,以便它可以选择将其发送到哪个 View 。
我正在考虑将整个 $('#target').click ... 放在 MainView() 中而不是 alert('Handler called!');我将引用 EntryController.TargetEventRaise(),但这开始看起来有点像稳定的代码。解决这个问题的最佳方法是什么?
最佳答案
您正在寻找 jQuery 的 live
event handlers ,它将处理与选择器匹配的每个元素的事件,无论该元素是何时创建的。
例如:
$('#target').live('click', function() {
alert('Handler called!');
});
或者,您可以让 MainView
函数本身接受回调,并在回调中添加处理程序。然后,您可以在其回调内的 MainView
中调用回调。
关于javascript - 尚未在 Javascript 中创建的 DOM 元素上的事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3233829/