我试图防止我的按钮在 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()
ande.preventDefault()
以及它们的所有组合,但它不起作用。这个完全相同的代码适用于常规 UI 按钮(不在按钮集中的按钮)。
任何帮助,将不胜感激。
编辑
我还没有解决这个问题。我很想给你们赏金来帮助我,但我不能,因为我是新成员。有没有人遇到过这个问题,他想使用buttonset()
持续活动的按钮,而不是复选框?