Как сначала найти щелчок мышью, а если нет, то перейти к наведению мыши

Как найти mouseclick сначала, если не нажали, затем перейдите к mouseover?

Я реализовал два типа функций в двух событиях мыши. Один в mouseover а другой в mouseclick,

Если я нажал, мне нужно вызвать mouseclick событие первым, а не mouseover событие. Я знаю, что по умолчанию, mouseover срабатывает первым. Но как добиться этого типа сценария.

Код:

$('.example').mouseover(function (event) {
    // ...
    //mouse over logic
    // ...
});

$('.example').mouseclick(function (event) {
    // ...
    //mouse click logic
    // ...
});

Замечания:

Алос, я пытался с таймером, установить флажки управления, но в каждой попытке, только mouseover запускается первым. И то и другое mouseover а также mouseclick имеет разные функциональные возможности. Если оба одинаковы, то мы можем объединить. Но здесь дело обстоит иначе. Я также искал по сети для этого. Но ничего не помогало до сих пор. Благодарю.

3 ответа

Как насчет определения события наведения мыши в событии щелчка?

Пример:

$('.example').mouseclick(function (event) {
    // ...
    //mouse click logic
    // ...
    $(body).bind('onmouseover', '.example'){
         // mouseover logic
    }
 });

Я не проверял жестко...

У вас есть 2 варианта:

  • Запустите событие вручную:

    $(this).trigger('mousehover');
    

    Поместите это в обработчик кликов.

  • Сохраните обработчик в переменной и запустите его вручную в обработчике кликов.

Должно быть достаточно легко реализовать это самостоятельно

Используйте следующее:

var timer;
$(".example").on("mouseenter",function(e){
        timer=setTimeout(function(){ 
            // onmouseenter if not clicked
            $(".example").css({background:"red"});    // for testing
        }, 2000);
});

$('.example').click(function (event) {
    clearTimeout(timer);   // Don't call the onmouseenter
    $(".example").css({background:"blue"});    // for testing
});

https://jsfiddle.net/ozgvfjzs/

Другие вопросы по тегам