【问题标题】:Checkbox click event fires before change event in Firefox unlike in Chrome与 Chrome 不同,在 Firefox 中的更改事件之前触发复选框单击事件
【发布时间】:2015-07-24 07:29:54
【问题描述】:

我的脚本中有两个复选框事件,一个是点击事件,另一个是更改事件。 当我单击它时,它首先触发更改事件,然后在 Chrome 中单击事件,但在 Firefox 中它是相反的。有什么办法可以在 Firefox 中改变它的顺序吗?

【问题讨论】:

  • 你能分享你的代码吗?为什么要举办两个活动?
  • @LinkinTED 那是因为我有一个依赖于复选框点击的下拉控件。如果您不从下拉列表中选择任何项目,那么用户应该无法选中复选框。平均而言时间我需要显示基于复选框选中和取消选中的消息。
  • 你能分享你的代码吗?我不明白为什么您不能将所有内容都放入单个更改处理程序中。我相信 IE 的行为与 Firefox 相同(点击首先触发 - 这对我来说很有意义,因为您需要点击才能更改)
  • 只使用更改事件怎么样。在该函数中,您首先检查是否设置了值。如果不是,则返回 false,否则执行函数...?请添加您的功能

标签: jquery google-chrome firefox checkbox dom-events


【解决方案1】:

我不知道为什么触发事件的顺序在浏览器之间不一致,但我不明白为什么不能将所有内容移入单个 change 处理程序。如果您必须使用单独的处理程序,您可以添加一个超时,click 事件仍然会在 Firefox 中首先触发,但其代码在更改处理程序触发后才会执行。

var myBoolean = false;

$('#example').on({
    'click': function() {
        setTimeout(function() {
            console.log('clicked'); 
            console.log(myBoolean);
        }, 1);
    },
    'change': function() {
        console.log('changed');
        myBoolean = true;
    }
});

Here's a fiddle

【讨论】:

  • 它工作,谢谢你
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-05-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多