jQuery: переключить класс на Mouseover/Mouseout of Element, но сохраните класс, если нажмите на элемент?
Вопрос
Подозревайте, что я стараюсь быть слишком умным для своего же блага с этим!
Я работаю над функцией плагина jQuery, которая будет включать класс включения/выключения на элементе, когда вы нажимаете/выходят, но не удаляете класс, если вы нажимаете внутрь элемента, прежде чем колебаться, и не переключается, если У элемента уже есть этот класс, прежде чем наклоняться.
Я попытался придумать следующее:
$.fn.showHover = function(settings) {
this.bind('mouseover', function hoverIn(){
if ($(this).hasClass('active') == false) {
$(this).addClass('active');
$(this).bind('click', function getFocus(){
$(this).unbind('mouseout', hoverOut);
})
$(this).bind('mouseout', function hoverOut(){
$(this).removeClass("active");
$(this).unbind('click', getFocus);
})
}
})
return this;
};
... Идея, если вы наведите, прежде чем щелкнуть, удалите класс и непредведите нажмите - если вы нажмете перед тем, как находить на расстояние, раскрыть Mouseout, а класс никогда не удаляется.
Очевидно, (так как я прошу здесь о помощи!).
Может ли кто -нибудь указать, почему это терпит неудачу, и, возможно, предложить лучший способ обойти это? Спасибо!
Решение
Если изменение внешнего вида элемента является вашей целью через CSS, одно простое решение - просто добавить другой селектор с другим именем.
.active_hover,
.active_click { ... }
Затем свяжите событие Hover/Hopbor, чтобы добавить/удалить класс "Active_hover" и событие Click, чтобы добавить класс "Active_Click".
Другие советы
Вы могли бы сделать это
$(".class").mouseenter( function(){
$(this).css("edit css"); // you can use .animate instead of .css if you want
});
$(".class").mouseleave( function(){
$(this).removeAttr('style');
});
$(".class").click( function(){
$(this).addClass("setactiveclass");
});
Таким образом, когда вы падаете, установлен встроенный CSS, и если вы вкидываете из Div, встроенный стиль, установленный jQuery, удаляется .. и если вы нажмете на него. На нем установлен жесткий класс, поэтому он не мешает друг другу.