jQuery: переключить класс на Mouseover/Mouseout of Element, но сохраните класс, если нажмите на элемент?

StackOverflow https://stackoverflow.com/questions/1785650

Вопрос

Подозревайте, что я стараюсь быть слишком умным для своего же блага с этим!

Я работаю над функцией плагина 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, удаляется .. и если вы нажмете на него. На нем установлен жесткий класс, поэтому он не мешает друг другу.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top