javascript - Knockout.js 默认事件绑定(bind)与使用 jQuery 事件委托(delegate)的自定义绑定(bind) .on() - 性能和 yield ?

标签 javascript jquery knockout.js

使用自定义绑定(bind)和 $.on() 对具有约 500 行的某些数据列表的人机交互使用react是否有一些性能或其他 yield ?

想到这个问题是因为我注意到使用 bind() 将 knockout 事件附加到元素,这意味着它们出现在每个点击按钮上,还是我错了?

我有两个样本

第一 - 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/ - 事件仅通过自定义绑定(bind)附加到父级

<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>

客户绑定(bind)

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);
        });
    }
};

那么,进行此类自定义绑定(bind)是否有意义?

最佳答案

Is there some performance or other gains using custom binding and $.on() to react on human interaction on some list of data with ~500 rows?

是的。使用默认事件绑定(bind),Knockout 将为 500 行中的每一行附加一个处理程序。

如@nemesv 所述,您可以使用 Ryan Neimeyer 的 Knockout.DelegatedEvents库将利用事件冒泡有效地将处理程序附加到 DOM 元素事件。

关于javascript - Knockout.js 默认事件绑定(bind)与使用 jQuery 事件委托(delegate)的自定义绑定(bind) .on() - 性能和 yield ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14458377/

相关文章:

javascript - 如何在菜单栏中的特定菜单选项卡中设置默认选项卡

javascript - 如何使用 javascript 或 jquery 在 dom 和屏幕上移动元素

jquery - 是什么导致了 Internet Explorer 9 中的空白

javascript - 图片库悬停叠加高度问题

javascript - 如何使用 tbody 作为根 react 元素

javascript - Knockoutjs 可观察对象数组按名称绑定(bind)选择器

javascript - 防止双击导致 HTML 表单中的重复提交

Javascript 优化

php - 欧元符号显示为\u00e2\u0082\u00ac 和 ➡️

javascript - knockout.js 与 MVC 5 上的 kendo UI MultiSelect