2012-04-17 5 views
6

Ich habe begonnen, Hammer.js (https://github.com/eightmedia/hammer.js) zu verwenden, das ein großes kleines Skript ist, aber ich bin mir nicht sicher, wie Sie die Ereignisse mithilfe des Ereignishandlers .on() jQuery delegieren.Delegieren von Hammer.js-Ereignissen mit jQuery

Ich habe hier ein wenig jsfiddle Beispiel ein: 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++; 
}); 

Antwort

3

Weiß nicht, ob Sie jemals eine Antwort auf Ihre Frage gefunden. Die Lösung ist einfach und zweiteilig. Erstens, da Sie versuchen, die Aufrufe mit jQuery zu verwenden, sollten Sie die jQuery-Plugin-Version von Hammer verwenden.

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

Der zweite Teil ist, dass Sie mit der Objektauswahl Hammer-Methode verwenden müssen: Eine aktuelle Version der jQuery-Plugin findet Sie unter. Dazu fügen Sie den Hammer-Aufruf zwischen Selektor und Bindung ein. Wie so:

jQuery-Objekt:

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

jQuery Hammer Objekt:

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

Das ist es ...

+0

dies nicht für mich arbeiten mit den neuesten hammerjs .. $ ('.parent'). hammer(). on ('tippen', '.child', function() { console.log ('tap'); }); –

+0

Mit dem 'jQ'-Plugin wird eine' Hammer'-Instanz instanziiert und an das Element angehängt. Es sieht nicht so aus, als ob es tatsächlich bei der Ereignisdelegierung hilft. – Lambart