gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 14:51:23 25 4
gpt4 key购买 nike

如何监听 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com