JavaScript / jQuery - 执行onclick-callback后,'checked'状态被重置

时间:2012-02-01 07:23:12

标签: javascript jquery javascript-events checkbox onclick

这让我很生气。我无法理解它。

我根据复选框编写了一个过滤函数,然后点击它们的标签。我正在查看“已检查”状态。复选框的状态和显示列表的mathed元素(其余元素被隐藏)。我使用3rdparty插件来样式化复选框(从示例中剪切)并使复选框被检查,而其他onClick事件进行过滤。

问题是,经过检查'状态成功设置在回调函数中它突然"突然"重置!我无法理解为什么会这样。

我在这里实现了基本逻辑(没有样式化): http://jsfiddle.net/3Xtuh/13/ 请大家帮我解决这个问题。

3 个答案:

答案 0 :(得分:1)

问题是您手动调用click事件,然后当您的函数运行完毕时,将调用默认的click事件。

将事件变量传递给click处理程序并调用event.preventDefault();修复了这种行为。

请参阅此处的示例:http://jsfiddle.net/3Xtuh/14/

答案 1 :(得分:0)

HTML label将检查关联的复选框,即使它是隐藏的(使用CSS),因此无需重新发明轮子。

您应该使用change()事件。试试这个demo并查看您的控制台。

答案 2 :(得分:0)

这是违反js脚本的默认浏览器行为。默认情况下,单击复选框或包含有效for属性集的标签,切换该复选框的checked状态。

您已在标签上附加自定义onclick处理程序。

那么当点击标签时会发生什么?您的点击处理程序被触发(在您更改目标复选框的状态),然后