2012-04-17 13 views
6

Ho iniziato a utilizzare Hammer.js (https://github.com/eightmedia/hammer.js), che è un piccolo script, ma non sono sicuro come delegare gli eventi utilizzando il gestore di eventi .on() di jQuery.Delegare gli eventi Hammer.js con jQuery

ho creato un piccolo esempio jsfiddle qui: http://jsfiddle.net/will/3dUKu/1/

var i = 0; 
// How would I apply hammer to this situation? 
$('nav').on('click', 'button', function() { 
    $('<button id="' + i + '">Extra button ' + i + ' (' + $(this).attr('id') + ')</button>').appendTo('nav'); 
    i++; 
}); 

risposta

3

Non so se avete mai trovato una risposta alla tua domanda. La soluzione è semplice e in due parti. Innanzitutto, poiché stai cercando di utilizzare le chiamate con jQuery dovresti usare la versione del plugin jQuery di Hammer. Una versione corrente del plugin jQuery sono disponibili all'indirizzo:

http://eightmedia.github.io/hammer.js/dist/jquery.hammer.min.js

La seconda parte è è necessario utilizzare il metodo di Martello con la selezione degli oggetti. Lo fai inserendo la chiamata Hammer tra il selettore e la rilegatura. In questo modo:

jQuery oggetto:

$('nav').on('click', 'button', function(){ 
    /* ... */ 
}); 

jQuery Hammer oggetto:

$('nav').hammer().on('click', 'button', function(){ 
    /* ... */ 
}); 

Questo è tutto ...

+0

questo non funziona per me con le ultime hammerjs .. $ ('.parent'). hammer(). on ('tap', '.child', function() { console.log ('tap'); }); –

+0

Tutto il plugin 'jQ' crea un'istanza di' Hammer' e lo collega all'elemento. Non sembra affatto che aiuti effettivamente con la delega degli eventi. – Lambart

Problemi correlati