1

我正在尝试绑定checked位于锚标记内的复选框输入,该标记本身已click绑定。

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

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

我试图实现的一个例子在这里:http: //jsfiddle.net/fzmppu93/2/

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

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

是否有另一种方法可以使复选框在锚标签内工作?

4

1 回答 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();
                    }
                });
            }
        }
    };

这是你的例子的一个工作小提琴

于 2015-07-02T08:27:23.353 回答