2013-07-02 3 views
2

Как связать события с несколькими событиями с одной и той же функцией. Я хочу, чтобы клик и touchstart делали то же самое. А потом мне нужна вторая функция для мыши. Я хотел бы использовать этот вид установки:Связать несколько событий с той же функцией

$(document).on({ 
     click: function (event) { 
     // I want this: click, touchstart: function (event) { 
      event.preventDefault(); 
      // do something   
     }, 
     mouseover: function (event) { 
      event.preventDefault(); 
      // do something   
     } 
    }, '.link'); 
+0

Try jQuery's '.он()'. REF: http://api.jquery.com/on/. ** Примечание: это поддерживается на v1.7 и выше ** – dreamweiver

+0

@dreamweiver - показанный код уже использует '.on()'. – nnnnnn

+0

ха-ха-ха, мой плохой :) В этом случае автор должен был потратить некоторое время на чтение фактического определения '.on()';) – dreamweiver

ответ

2

Вы можете комбинировать события в одном .on() с пространством:

$(document).on('click touchstart', function(e) { 
    // this will be called on click as well as touchstart 
}); 
1

Там нет причин, почему вы не можете вызвать внешнюю функцию вместо:

function myExternalFunction (event) { 
    // do stuff 
} 

$(document).on({ 
    click: myExternalFunction, 
    mouseover: myExternalFunction 
}, '.link'); 
0

Согласно the .on() documentation (и подтверждено через быстрый взгляд на .on() реализации), вы можете сделать это:

$(document).on({ 
    "click touchstart" : function (event) { 
     event.preventDefault(); 
     // do something   
    }, 
    mouseover: function (event) { 
     event.preventDefault(); 
     // do something   
    } 
}, '.link'); 

Демо: http://jsfiddle.net/XzkTm/