我计划触发许多自定义 JavaScript 事件,并像这样监听它们
$(document).trigger('changeSettings',['param1value']);
$(document).on('changeSettings',function(e,param1){
// do something
});
我是否应该将这些 on()
事件绑定(bind)到 $(document)
以外的对象?将大量监听器绑定(bind)到 $(document)
或 $('body')
是一种不好的做法吗?
最佳答案
虽然这可行,但最好(从可读性和性能的 Angular )使用专用事件库。如果您不想这样做,这是一种更简洁的方法。
jQuery 允许创建 documentFragments ,它只是作为一个对象存在于内存中。它不会添加到您的页面,只能通过使用返回值(此处存储在 window.events
中)在其上触发事件。
window.events = $('<div>');
events.on('changeSettings',function(e,param1){
// do something
});
events.trigger('changeSettings', ['value']);
fiddle
这是一个使用 radio.js 的例子, 它只做事件而不做其他事情。
radio('changeSettings').subscribe(function(data1, data2) {
//do something with data1 and data2
});
radio('changeSettings').broadcast(data1, data2);
你也可以做这样的事情,它允许重构和缩小。
var events = {changeSettings: radio('changeSettings')};
events.changeSettings.subscribe(function(data1, data2) {
//do something with data1 and data2
});
events.changeSettings.broadcast(data1, data2);
关于javascript - 是否有关于将自定义操作绑定(bind)到什么的最佳实践?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18285588/