1

这是我的问题的 JSFiddle

注意我为此使用了 JQuery 2.0.2。

我正在使用 JQuery 复选框树插件,当我手动单击其中的每个元素时Subgroup B2Subgroup B2也会被选中。相反,如果我手动取消选中其中一个孩子,Subgroup B2将进入“部分选择”状态,取消选中所有孩子将完全取消选中Subgroup B2。这很好用并且符合预期。

但是,请注意顶部的按钮。

我试图通过代码触发这些点击事件。

第一个按钮会触发标签上的点击事件(当您手动点击框/文本时会点击该事件)。正如您会注意到的,它会选中所有复选框,但Subgroup B2仍仅部分选中。

再次单击该按钮再次关闭复选框,但事实并非如此。这就是按钮二的用途。由于某些原因要取消选中按钮,您需要单击与选中复选框所需的元素不同的元素。这对我来说毫无意义。

最后,如果您混合交互(实际点击和编码点击),事情就会开始更加崩溃。

我已经为此工作了几个小时,每次交互出现问题时,它都来自复选框。

我怎样才能让复选框像我的手动点击一样尊重我的编码点击?

4

1 回答 1

2

我相信按钮的问题来自触发的事件冒泡 DOM,您可以使用triggerHandler()而不是trigger()避免这种情况,只需注意此方法仅影响第一个匹配的元素,因此您需要在循环中使用它:

$("#trigChildren").on('click', function () {
    $('#one, #two, #three').each(function () {
        $(this).parent().triggerHandler('click');
    });
});

更新的小提琴

于 2013-10-09T06:00:01.263 回答