Knockout.js默认事件绑定与使用 jQuery 事件委托的自定义绑定 .on() - 性能和收益
Knockout.js default event binding vs custom bindings using jQuery event delegation .on() - performance and gains?
使用自定义绑定和 $.on() 对某些具有 ~500 行的数据列表的人机交互做出反应是否有一些性能或其他收益?
我想到了这个问题,因为我注意到淘汰事件是使用 bind() 附加到元素的,这意味着它们在每个点击按钮上,还是我错了?
我有两个样品
附加到子项的第一个 - http://jsfiddle.net/dzjosjusuns/yStt7/- 事件
<div data-bind="text:head.id"></div>
<div id="container" data-bind="foreach:head.rows">
<div class="item">
<button data-bind="click:$root.head.deleteRow">remove</button>
<span data-bind="text:name"></span>
</div>
</div>
第二个 - http://jsfiddle.net/dzjosjusuns/NN3h8/- 事件仅通过自定义绑定附加到父级
<div data-bind="text:head.id"></div>
<div id="container" data-bind="foreach:head.rows, onRowDelete:head.deleteRow">
<div class="item">
<button>remove</button>
<span data-bind="text:name"></span>
</div>
</div>
定制绑定
ko.bindingHandlers.onRowDelete = {
init: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
$('#container').on('click', '.item button', function (event) {
valueAccessor().call(viewModel.head, ko.dataFor(event.target), event.target);
});
}
};
那么,执行此类自定义绑定是否有意义?
使用自定义绑定是否有一些性能或其他收益,以及 $.on() 对某些数据列表上的人机交互做出反应 ~500 行?
是的。使用默认事件绑定,Knockout 会将一个处理程序附加到 500 行中的每一行。
如@nemesv所述,您可以使用 Ryan Neimeyer 的 Knockout.DelegatedEvents 库,该库将利用事件冒泡来有效地将处理程序附加到 DOM 元素事件。
相关文章:
- 在D3.js中,有没有任何方法可以将x和y方向上的滚动事件绑定到平移svg
- 如何在tinymce编辑器中将点击事件绑定到html标签
- 如何将事件绑定到从AJAX请求注入的HTML
- 将click事件绑定到AngularJS指令中的子元素
- Jquery将事件绑定到页面上的多个实例
- 事件绑定到动态创建的元素
- 使用jQuery进行事件绑定
- 如何将单击事件绑定到其他类
- 更改事件绑定's函数在页面加载时调用
- Jquery事件绑定获胜'当作为方法调用时不起作用,但当直接在控制台中调用时会起作用
- 动态创建的DOM元素上的jQuery事件绑定
- 我是否可以使用 Angular 将鼠标向上事件绑定到文档正文
- 将事件绑定到除 data-rel= BACK 之外的所有锚标记
- 将函数事件绑定到更改函数的复选框/标签
- 使用 Angular 和 UI-bootstrap 对模态事件绑定无法工作的指令
- 聚合物 - 将事件绑定到动态创建的元素
- 将事件绑定到其他UI组件's函数,在Kendo MVVM中
- jQuery Mobile——事件绑定
- JQuery无法将模糊事件绑定到所有<输入>页面中的元素
- 将点击事件绑定到新元素&使得ID'是独一无二的