KnockoutJS:不能选择单击绑定锚标记内的复选框

问题描述 投票:1回答:1

[我试图将checked绑定到位于锚标签内的复选框输入上,该锚标签本身已绑定click

虽然我知道这可能并不完全有效(交互式内容可能不是锚标记的后代,但我仍然希望它能够按预期工作-即使只是为了理解它。

当前,仅处理外部click事件,并且单击永远不会到达我的复选框。

我要实现的目标的示例在这里:http://jsfiddle.net/fzmppu93/2/

浏览过KnockoutJS文档后,我在锚标签的clickBubble: true绑定上尝试了click-无济于事。

如果您有兴趣,用例是一个包含链接的无序列表-这些“链接”中的每一个都包含电视节目中的信息:标题,演员,图像,简介。该节目是可选的,但也有“快速动作”将其标记为可见,加注星标等等。

还有另一种使复选框在锚标记中起作用的方法吗?

javascript knockout.js dom-events event-bubbling knockout-3.0
1个回答
2
投票

我编写了一个类似于“ clickBubble”的自定义绑定处理程序,但是我的允许您阻止任何事件的传播。

这里是绑定处理程序:

ko.bindingHandlers.preventBubble = {
        init: function (element, valueAccessor) {
            var eventName = ko.utils.unwrapObservable(valueAccessor());
            var arr = eventName;
            if (!eventName.pop) {
                arr = [arr];
            }
            for (var p in arr) {
                ko.utils.registerEventHandler(element, arr[p], function (event) {
                    event.cancelBubble = true;
                    if (event.stopPropagation) {
                        event.stopPropagation();
                    }
                });
            }
        }
    };

这是您的示例的有效fiddle

© www.soinside.com 2019 - 2024. All rights reserved.