jQuery- 通过输入或td

jQuery- 通过输入或td,第1张

我想通过点击td本身(和/或复选框)来切换td内的复选框。

我有以下代码:

$("[id^=musicCheckboxHoldingTD]").on("click", function (e) {
    e.stopPropagation();
    $this = $(this);
    $this.find('.musicSelectionRoundCheckbox:checkbox').click();

});
$(".musicSelectionRoundCheckbox:checkbox").click(function(e) {
     e.stopPropagation();
     $this = $(this);
     musicCheckboxToggled($this); // this function gets called twice 
});

当我只点击td时,这非常有效。

如果我点击td中的复选框,那么由于td的事件和复选框的事件,函数会被调用两次。

如何防止这种情况发生只运行一次?

谢谢: - )

最佳答案:

2 个答案:

答案 0 :(得分:1)

你真的需要两个活动吗?从我所看到的,在td上只有事件而不停止传播将允许你为你的复选框 td设置一个处理程序。

$("#musicCheckboxHoldingTD").on("click", function (e) {
    musicCheckboxToggled($(this));
});

如果您的td有其他事情不应该触发事件,您可以调整选择器并阻止传播。

$("#musicCheckboxHoldingTD, #musicCheckboxHoldingTD > input[type=checkbox]").on("click", function (e) {
    e.stopPropagation();
    musicCheckboxToggled($(this));
});

答案 1 :(得分:0)

我遇到了很多麻烦,似乎浏览器正在“检查”复选框,然后我的jquery事件正在逆转。

我最终通过将$("[id^=musicCheckboxHoldingDiv]").on("click", function (event) { event.stopPropagation(); // stop the event bubble up $this = $(this); var obj =$this.find('input'); obj.prop('checked', !obj.is(':checked')); musicCheckboxToggled(); }); 与HTML输入元素放在一起来禁用该复选框。

然后我使用了以下jQuery代码:

{{1}}

目前正在运作。如果有人能够看到这个答案有任何问题,请在评论中告诉我,或者用另一个答案对其进行改进。我会留下几天,然后将此标记为已接受的答案。

感谢大家的帮助: - )

本文经用户投稿或网站收集转载,如有侵权请联系本站。

发表评论

0条回复