2010-07-13 44 views
1

我有一个Javascript模块下面的JavaScript:关于尚未创建的DOM元素的事件,使用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(),但开始看起来有点像稳定的代码。什么是最好的方法来解决这个问题?

回答

2

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

例如:

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

此外,也可以使MainView函数本身需要一个回调,并在回调中添加处理程序。然后您可以在其回拨中拨打MainView的回叫。

相关问题