Événements jQuery sur iOS 5

J'ai un problème avec jQuery 1.6.4, iOS 5 et l'logging des events touchstart / touchend (comme indiqué dans le titre, évidemment).

Prenez le code suivant:

<!DOCTYPE html> <html lang="fr"> <head> <meta charset="utf-8" /> <script type="text/javascript" src="mmpa/jquery-1.6.4.min.js"></script> <script type="text/javascript"> $(document).ready(function() { var $body = $('body'); $('<button>').html('test jQuery').bind('touchstart', function() { alert('touchstart'); }).appendTo($body); }); </script> </head> <body> <button ontouchstart="alert('touchstart');">test pure JS</button> </body> </html> 

Le button "JS pur" affiche l'alerte dans iOS 4.3 et iOS 5, mais le button "jQuery" ne fonctionne que sur iOS 4.3. Testé sur simulateur iPad / iPhone, 4.3 et 5; également testé sur de vrais iPhone 4.3, iPhone 5.0 et iPad 5.0. Même réaction si j'utilise un <input type="button"> ou même un simple <a> au lieu d'un <button> .

Est-ce un problème lié à jQuery comme je crois?

Répondu par un gars sur les forums de développement Apple: Je n'ai besoin de bind () qu'après l'ajout de l'élément au DOM, comme ceci:

 var btn = $('<a>').html('test jQuery').appendTo($body); btn.bind('touchstart', function(e) { alert('touchstart'); });