2015-06-26 3 views
0

Я хочу запустить код, когда одновременно кликают два разных элемента. Очевидно, что у нас есть только одна мышь, но, похоже, это возможно на мобильном телефоне, где пользователь может использовать сразу два пальца.Обнаруживать одновременное нажатие на два разных элемента.

Я нашел этот answer, в которых кратен селектор используется для достижения этого типа функциональности:

$('#someElement').mouseleave() || $('#someOtherElement').mouseleave()) { 

// do something 

}); 

Однако то, что я хочу достичь более точно представлен с помощью & & оператора:

$('#someElement').click() && $('#someOtherElement').click()) { 

// do something 

}); 
+0

Затем вы нажимаете на событие элемента, не обрабатываете два элемента только один, но можете обрабатывать его с помощью родительских элементов. –

+0

. Вы можете установить некоторый флаг на сенсорном объекте одного элемента и проверить, установлен ли он в сенсорном начале второго элемента - и наоборот. Также установите соответствующий флаг в значение false на значении для обоих элементов. – techfoobar

+0

с помощью мыши вы можете щелкнуть только один элемент сверху на другом, но при касании я рекомендую использовать такие библиотеки касаний, как hammer.js, Touchy и т. Д., Потому что это легко обрабатывать различные события, например, несколько касаний и что-то в этом роде. –

ответ

2

Следите за кликом с использованием тайм-аута и допустимым интервалом между нажатиями, которые вы принимаете. В примере ниже, если они кликают в течение 1 секунды друг от друга логика срабатывает:

(function(){ 
    var $el1 = $(); 
    var $el2 = $(); 
    var el1Clicked = false; 
    var el2Clicked = false; 
    var tolerance = 1000; 

    var onEl1Click = function(){ 
     el1Clicked = true; 

     setTimeout(function(){ 
      el1Clicked = false; 
     }, tolerance); 

     if(el2Clicked){ 
      //both are clicked within a tolerance 
     } 
    }; 

    var onEl2Click = function(){ 
     el2Clicked = true; 

     setTimeout(function(){ 
      el2Clicked = false; 
     }, tolerance); 

     if(el1Clicked){ 
      //both are clicked within a tolerance 
     } 
    }; 

    $el1.on('click', onEl1Click); 
    $el2.on('click', onEl2Click); 
})(); 
+0

Отлично работает. Благодарю. –

0

Вы можете использовать имеющиеся Mobile JavaScript Frameworks или записать свой собственный код, как this.

Надеюсь, это то, что вы ищете.

Смежные вопросы