如果快速单击多次,复选框上的jQuery UI按钮将不起作用

时间:2012-01-19 00:43:41

标签: php javascript jquery

我的页面设置有一些复选框,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问题,我似乎无法找到一个好方法。

1 个答案:

答案 0 :(得分:1)

我之前遇到过这个问题,似乎是时机问题。使用is:在某些浏览器中点击命令检查(因为我的问题是)时间不对。我的意思是说,我发现的问题是,点击的执行速度往往比lib选中复选框要快。我所做的反击是不使用onclick或.click,而是改为改变

例如

$("input[type=checkbox]").change(function(e) {
    // preform some actions here, like show or hiding somthing or whatever
});

根据我的经验,.change会在每次选中或取消选中复选框时触发,因此您可以获得更加精确的阅读

Fiddle Example