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

标签 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,当我按下播放时,一切都会按预期进行。

处理此问题的最佳方法是什么?我希望所有事件都发生在 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/

相关文章:

javascript - 在 [contenteditable] div 中完全禁用粘贴

jquery - 将 Google map 插入 WYSIWYG 编辑器,然后正确保存和检索

asp.net-mvc - knockout 和 .NET View 模型之间的区别?

c++ - QlistView如何更改标准项选择

jQuery-重新定位 div onclick 以与表格行对齐

javascript匿名函数变量赋值

javascript - 将脚本渲染为 HTML 而不执行

javascript - 无法在 jqGrid 中格式化日期

javascript - 使用 node 和 multer 将图像上传到 heroku 不起作用

javascript - Node.js 进程在 AWS Fargate 中的行为如何?