我在移动设备中遇到了jQuery逻辑的奇怪行为 (在ios 8.2 / 8.3和4.1中),其工作罚款 chrome,mozilla和ie 。
我的要求:我有一个列表复选框,我可以从中选择一个,就像一个单选按钮(我的要求)。 有四个按钮( CREATE,VIEW,EDIT,DELETE )对应于提供的每个复选框。
当任何复选框选中时,我禁用创建按钮并启用VIEW,EDIT,DELETE按钮和
如果任何复选框未选中,我启用创建按钮并禁用VIEW / EDIT / DELETE按钮,我已为此编写了以下代码:
CREATE-button类名:'disable-on-check'
VIEW / EDIT / DELETE按钮类名:'enable-on-check'
$(':checkbox').on('change',function(){
var curr = $(this);
if(curr.is(':checked')){
$(".enable-on-check").addClass("click-enabled").removeClass("click-disabled");
$(".disable-on-check").removeClass("click-enabled").addClass("click-disabled");
$('.chkbx').prop("checked",false); //to make checkbox to behave like a radio button
$(this).prop("checked",true); //to make checkbox to behave like a radio button
}
else{
$(".enable-on-check").removeClass("click-enabled").addClass("click-disabled");
$(".disable-on-check").removeClass("click-disabled").addClass("click-enabled");
} });
我的问题:在mobile-safari中(ios 8.2 / 8.3和4.1) 当我检查任何复选框(超过两次或三次)时,CREATE按钮会突出显示而不是 VIEW / EDIT / DELETE按钮和
如果我取消选中,任何复选框都会启用VIEW / EDIT / DELETE按钮而不是 CREATE按钮 - 这正是反向行为强烈的>我的逻辑。
请帮助我,为什么我只在移动游猎中遇到这个问题? 感谢提前
答案 0 :(得分:1)
经过大量试验后,更改事件类型有助于我解决问题。
我在经验中观察到的是 .on('change')在某个实例中调用我的逻辑两次(不知道为什么)。所以我尝试了 .on('keydown click'),现在一切正常:)
最后答案是:
$(':checkbox').on('keydown click',function(){
var curr = $(this);
if(curr.is(':checked')){
$(".enable-on-check").addClass("click-enabled").removeClass("click-disabled");
$(".disable-on-check").removeClass("click-enabled").addClass("click-disabled");
$('.chkbx').prop("checked",false); //to make checkbox to behave like a radio button
$(this).prop("checked",true); //to make checkbox to behave like a radio button
}
else{
$(".enable-on-check").removeClass("click-enabled").addClass("click-disabled");
$(".disable-on-check").removeClass("click-disabled").addClass("click-enabled");
} });