javascript - 是否有关于将自定义操作绑定(bind)到什么的最佳实践?

标签 javascript jquery jquery-events

我计划触发许多自定义 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/

相关文章:

javascript - Url.Action 有一个对象路由值为 null

javascript - 使用 javascript 对象设置 Kendo UI 数据源

jquery - "this"如何引用JQuery中的DOM元素

javascript - 将 bool 值从 rails Controller 传递到 javascript 以便在条件中使用

javascript - 传递/改变 jQuery UI 拖动事件

javascript - 使用 lodash 合并连接值的对象

javascript - 单击带有 flash 的 iframe

javascript - DOM 加载后,如何使用 JavaScript 或 JQuery 从 href 属性中删除字符?

javascript - 如何让 jQuery 事件委托(delegate)在 IE7 中像在 Chrome 中一样运行?

javascript - 使用 Javascript 模拟滚动事件