停止按钮在jQuery UI按钮组中失去活动状态

时间:2013-10-20 19:37:15

标签: mouseleave lost-focus jquery-ui-button jqueryi-ui-buttonset

我试图阻止我的按钮在mouseleave上丢失活动课程,但我无法让它工作。

所以,我的按钮是用jQuery' buttonset()初始化的。它们是按钮,而不是复选框。复选框是不可能的,因为它们需要ID才能工作。

这是我的代码:

$('.jquery_ui_buttonset', this.scope).buttonset();

$('.jquery_ui_buttonset > button', this.scope).each(function() {
    $(this).bind('mouseleave keyup mouseup blur', function(e) {
        if ($(this).hasClass('ui-state-persist')) {
            e.stopImmediatePropagation();
            if (e.type == 'blur') {
                $(this).removeClass('ui-state-focus');
            }
            $(this).removeClass('ui-state-hover');
        }
    });
});

这个想法是,如果按钮具有ui-state-persist类,则在明确删除它们之前不应丢失ui-state-active类。切换活动按钮是通过此处理程序单击完成的:

CMSPage.prototype.switchEditTab = function(e) {
    if (e.data.params.id == null) {
        return;
    }

    $('.editor .body', this.scope).hide();
    $('.editor .header button', this.scope).removeClass('ui-state-active').removeClass('ui-state-persist');
    $('.editor .body[data-tab-id=' + e.data.params.id + ']', this.scope).show();
    $('.editor .header button[data-id=' + e.data.params.id + ']', this.scope)
        .addClass('ui-state-active').addClass('ui-state-persist');
}

我还尝试添加e.stopPropagation()e.preventDefault()及其所有组合,但它不起作用。这个完全相同的代码适用于常规UI按钮(不在按钮组中)。

任何帮助都将不胜感激。

修改

我还没有解决这个问题。我很乐意帮助你们帮助我,但我不能成为新成员。有没有人遇到过这个问题,他希望buttonset()使用持久活动按钮,而不是复选框?

0 个答案:

没有答案