【问题标题】:Firefox issue with Javascript click event on input checkboxFirefox 输入复选框上的 Javascript 点击事件问题
【发布时间】:2014-06-26 03:53:04
【问题描述】:

我正在使用一些 Jquery 代码来修改与单击的输入相关的标签的样式类。为此,我使用了 primefaces 添加的 ui-state-active 类,如下所示:

$("input[type='checkbox']").click( function() {
    $(this).toggleClass("clicked"); //Just to have a reference of the component being clicked
    if ($("div:has(.clicked) + div").hasClass("ui-state-active")) {
        addSelected(compo); //Add class to the label related with the input
    } else {
        rmvSelected(compo); //Remove class to the label related with the input
    }
    $(this).toggleClass("clicked");
});

$("input[type='radio']").click( function() {
    //same
});

我知道代码有点复杂,但由于 primefaces 呈现它的方式,我不得不这样做。问题是,大多数浏览器(如 chrome、IE10 甚至 firefox)都只有 input[type='radio'] 的工作方式如下:单击输入后,添加 ui-state-active 类,然后调用 javascript click 事件,所以我的代码以这种方式完美运行。但是发生在我身上的是,只是在 Firefox 中,而 input[type='checkbox'] 正在以相反的方式工作,即首先调用点击事件,然后添加类 ui-state-active,这使我的代码失败。这是Firefox的错误吗?还是我的代码有问题?我该如何解决?谢谢。

PD:使用最新的 Firefox 版本测试:30.0

【问题讨论】:

  • 你能设置成 jsFiddle 并复制问题吗?
  • 你在使用哪个复选框 p:selectBooleanCheckboxh:selectBooleanCheckbox
  • p:selectManyCheckbox

标签: javascript jquery firefox primefaces


【解决方案1】:

我暂时使用if ($.browser.mozilla) { 来解决它,以便在浏览器是firefox 时添加所需的行为。虽然我仍在寻找更时尚的解决方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-04
    • 2014-01-16
    • 1970-01-01
    • 1970-01-01
    • 2014-07-20
    • 2021-08-08
    • 1970-01-01
    • 2021-06-09
    相关资源
    最近更新 更多