我的页面设置有一些复选框,UI.button应用于它们。它们每个都有一个onclick事件,它调用一个显示选项卡(如果选中)或删除选项卡(如果未选中)的函数。
问题是,如果您快速点击它们,最终可能会显示一个标签,并且复选框显示为未选中,反之亦然。
我已尝试删除onclick事件,使其成为dblclick事件,并且还通过attr()和.button('option','disabled',true)禁用复选框,但没有运气解决问题问题。
我的相关代码如下:
创建复选框的PHP:
$output .= '<input onclick="toggleTab(\'' . $group['_id'] . '\', this);" type="checkbox" name="groups" value="'.$group['_id'].'" id="groups_'.$group['_id'].'" /><label id="l_'.$group['_id'].'" for="groups_'.$group['_id'].'">'.$group['name'].'</label>';
点击时调用javascript函数:
function toggleTab (id, elem) {
if ($(elem).is(':checked')) {
$('#tab_' + id ).show();
} else {
var currentTab = $('#tabPricing .ui-tabs-panel:not(.ui-tabs-hide)');
tab = currentTab.prop("id");
if (tab == 'tab' + id) {
$('#tabPricing .innerTabs').tabs('select', 'tabDefault');
}
$('#tab_' + id ).hide();
}
}
我知道这可能是一般的JavaScript问题,我似乎无法找到一个好方法。
答案 0 :(得分:1)
我之前遇到过这个问题,似乎是时机问题。使用is:在某些浏览器中点击命令检查(因为我的问题是)时间不对。我的意思是说,我发现的问题是,点击的执行速度往往比lib选中复选框要快。我所做的反击是不使用onclick或.click,而是改为改变
例如
$("input[type=checkbox]").change(function(e) {
// preform some actions here, like show or hiding somthing or whatever
});
根据我的经验,.change会在每次选中或取消选中复选框时触发,因此您可以获得更加精确的阅读