我使用一些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
答案 0 :(得分:0)
我正在使用if ($.browser.mozilla) {
暂时解决它,以便在浏览器为Firefox时添加所需的行为。虽然我还在寻找更时尚的解决方案。