Firefox输入复选框上的Javascript点击事件问题

时间:2014-06-17 17:28:42

标签: javascript jquery firefox primefaces

我使用一些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,甚至只有input[type='radio']的firefox都是这样的:点击输入后,添加了类ui-state-active,然后javascript点击事件就是调用,所以我的代码以这种方式完美运行。但是发生在我身上,只是在firefox和input[type='checkbox']只是相反的工作,即先调用click事件然后添加类ui-state-active,这使我的代码失败。这是一个firefox bug吗?或者我的代码有问题?我怎么解决呢?感谢。

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

1 个答案:

答案 0 :(得分:0)

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