jQuery on('change') 逻辑在 ios 8.2/8.3 中表现异常
jQuery on('change') logic behaving wierdly in ios 8.2/8.3
我在 mobile-safari(在 ios 8.2/8.3 和 4.1 中)面临 jQuery 逻辑的奇怪行为, 在 chrome、mozilla 和 ie.
中工作
我的要求:我有一个复选框列表,我一次只能从中选择一个,就像单选按钮一样(这是我的要求)。
有四个按钮(创建、查看、编辑、删除)对应于提供的每个复选框。
当任何复选框被选中时,我禁用创建按钮并启用查看、编辑、删除按钮和
如果任何复选框未选中未选中,我将启用创建按钮并禁用VIEW/EDIT/DELETE按钮,为此我写了下面的代码:
CREATE-button class name: 'disable-on-check'
VIEW/EDIT/DELETE buttons class name: '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)
当我 选中 任何复选框(超过两次或三次)时,创建按钮被突出显示 而不是 VIEW/EDIT /DELETE按钮和
如果我取消选中任何复选框VIEW/EDIT/DELETE按钮将被启用而不是创建按钮——这是完全符合我的逻辑相反行为。
请帮帮我,为什么我只在 mobile-safari 中遇到这个问题??
提前致谢
经过多次尝试,更改事件类型帮助我解决了问题。
根据我的经验,我观察到 .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");
} });
我在 mobile-safari(在 ios 8.2/8.3 和 4.1 中)面临 jQuery 逻辑的奇怪行为, 在 chrome、mozilla 和 ie.
中工作我的要求:我有一个复选框列表,我一次只能从中选择一个,就像单选按钮一样(这是我的要求)。 有四个按钮(创建、查看、编辑、删除)对应于提供的每个复选框。
当任何复选框被选中时,我禁用创建按钮并启用查看、编辑、删除按钮和
如果任何复选框未选中未选中,我将启用创建按钮并禁用VIEW/EDIT/DELETE按钮,为此我写了下面的代码:
CREATE-button class name: 'disable-on-check'
VIEW/EDIT/DELETE buttons class name: '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) 当我 选中 任何复选框(超过两次或三次)时,创建按钮被突出显示 而不是 VIEW/EDIT /DELETE按钮和
如果我取消选中任何复选框VIEW/EDIT/DELETE按钮将被启用而不是创建按钮——这是完全符合我的逻辑相反行为。
请帮帮我,为什么我只在 mobile-safari 中遇到这个问题?? 提前致谢
经过多次尝试,更改事件类型帮助我解决了问题。
根据我的经验,我观察到 .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");
} });