Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript KnockoutJS:Click-Bound锚定标记内的复选框不可选_Javascript_Knockout.js_Dom Events_Event Bubbling_Knockout 3.0 - Fatal编程技术网

Javascript KnockoutJS:Click-Bound锚定标记内的复选框不可选

Javascript KnockoutJS:Click-Bound锚定标记内的复选框不可选,javascript,knockout.js,dom-events,event-bubbling,knockout-3.0,Javascript,Knockout.js,Dom Events,Event Bubbling,Knockout 3.0,我正在尝试绑定选中的复选框输入,该复选框输入位于锚定标记内,锚定标记本身是单击绑定的 虽然我知道这可能不是完全有效的(交互内容可能不是锚定标签的后代),但我仍然希望让它按预期工作——即使只是为了理解它 目前,仅处理外部的点击事件,点击从未到达我的复选框 我正在努力实现的一个例子如下: 在浏览了KnockoutJS文档之后,我尝试了锚定标记的单击绑定上的clickBubble:true,但没有成功 如果您感兴趣的话,用例是一个包含链接的无序列表——这些“链接”中的每一个都包含电视节目的信息:标题、

我正在尝试绑定
选中的
复选框输入,该复选框输入位于锚定标记内,锚定标记本身是
单击
绑定的

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

目前,仅处理外部的
点击事件,点击从未到达我的复选框

我正在努力实现的一个例子如下:

在浏览了KnockoutJS文档之后,我尝试了锚定标记的
单击
绑定上的
clickBubble:true
,但没有成功

如果您感兴趣的话,用例是一个包含链接的无序列表——这些“链接”中的每一个都包含电视节目的信息:标题、演员、图像、概要。该节目是可选择的,但也有“快速行动”来将其标记为已观看、启动,等等


是否有其他方法可以使复选框在锚定标记内工作?

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

以下是绑定处理程序:

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

下面是您的示例。

非常感谢您-这个bindingHandler非常有用,是一个非常漂亮的解决方案!没问题,伙计,很高兴我能帮上忙:)让我问你一个问题,为什么你想在
锚定
标记中包含复选框?你可以将它保留在外面,让一切正常工作。FYI@GoodQuestion/Answer。这里的例子是对我“继承”的相当复杂的标记/样式的过度简化,由于模板/样式/连续性的原因,目前无法更改。对HTML5规范有一个相当的了解。我知道它应该是什么样子,并且正在努力改变它-但是我现在很确定。可能是重复的