javascript - 对象的事件委托(delegate);如何监听事件?

标签 javascript jquery

如何监听 javascript 对象上的自定义事件?我试图在触发事件后触发应用程序级对象的方法,但与 DOM 元素不同,我无法为该对象注册监听器。

如何构造我的应用程序以监听触发的事件,然后执行操作?

js:

$(document).ready(function(){
  var app = {};
  app.doStuff = function(){ alert("Yo!");};

  $(app).on("myCustomEvent", function(){
    alert("doing stuff");
    app.doStuff();
  });

  $("body").on('click', "#trigger", function(){
    alert("triggered");
    $(this).trigger("myCustomEvent");
  });
});

在 jsbin 中报告: http://jsbin.com/zopubuso/1/edit

这背后的原因:

我正在创建一个主干应用程序,其中我的 app 对象中有一个全局事件导出。我正在尝试通过触发事件在 View 之间进行交流:

即。

app.on("myEvent", MyView.model.doStuff);
app.trigger("myEvent");

但我无法触发事件。

最佳答案

尝试:

用 jquery 触发:

$(app).trigger("myCustomEvent");

http://jsfiddle.net/9w8A5/

作为 Backbone 事件触发:

首先,您需要使用 Backbone.Events 扩展对象:

var app = {};
_.extend(app, Backbone.Events); // underscore.js '_.extend', We can also use jquery '$.extend()'
... on("myCustomEvent")...
app.trigger("myCustomEvent");

演示:http://jsfiddle.net/A5484/1/


从 agconti 更新。

这是在主干中完成附加事件的简单方法:

var app = _.extend({}, Backbone.Events);
var myView = Backbone.View.extend({
    initialize: function(){

        ... other configuration stuff ...

        app.on( "myCustomEvent", function(){
            this.doStuff();
        }, myView);
    },
    doStuff: function(){ alert("Yo!"); }
});

app.trigger('myCustomEvent');

* 使用 backbone 的事件对象然后使用 app.on(); 附加监听器更有利,就像我尝试做的那样。

关于javascript - 对象的事件委托(delegate);如何监听事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25145100/

相关文章:

经过修改的 javascript 示例不起作用

javascript - 使用 NodeJs 后端对应用程序计费中的 Playstore 进行身份验证和验证

javascript - 暂停视频时停止setInterval(Youtube播放器)

javascript - JS 在后台打开选项卡/模拟 ctrl-click

javascript - 如何使用下拉菜单返回 JQuery 隐藏的项目?

javascript - Promise是一种实现异步编程的技术吗?

javascript - 旋转图像 javascript--图像不旋转--MVC3

javascript - 根据元素数据工具提示值使用 JSON 填充工具提示

javascript - SystemJS 无法正确加载 RxJS

c# - AJAX仅适用于页面刷新