2013-06-03 2 views
4

J'ai un certain jQuery je cours sur un cas de test que nous étudions, et il court extrêmement lentement sur nos iPad 2. Cependant, il est rapide et réactif sur nos ordinateurs de bureau et ordinateurs portables. J'ai essayé de supprimer tous les sélecteurs (si possible) et d'utiliser plutôt des références stockées, ce qui n'a pas beaucoup aidé.jQuery en cours d'exécution extrêmement lente sur iPad

Avant que le changement était http://jsfiddle.net/EEGgv/5/ alors après avoir été http://jsfiddle.net/EEGgv/6/

Voici le code jQuery actuel:

$().ready(function() { 
    var $varSelected = 'undefined'; 
    var $this = 'undefined'; 
    var varPrev = ''; 
    var varNew = ''; 

    $('.btn').click(function() { 
     $this = $(this); 

     if ($varSelected !== 'undefined') { 
      // Get previous value 
      varPrev = $varSelected.text(); 

      // Find value we're trying to add 
      varAdding = $this.attr('value'); 

      if (varAdding == 'Clr') { 
       varNew = ''; 
      } else { 
       varNew = varPrev + varAdding; 
      } 

      // Write new value 
      $varSelected.text(varNew); 
     } 
    }); 

    $('.qtyBox').click(function() { 
     $this = $(this); 

     // Check if we've previously had a selected box 
     if ($varSelected === 'undefined') { 
      // Didn't have one before -- nothing special 
     } else { 
      // Had one selected. We need to unselect it. 
      $varSelected.removeClass('Selected'); 
     } 

     // Select the one we have now 
     $varSelected = $this; 

     // Add formatting 
     $this.addClass('Selected'); 

     // Clear value 
     varNew = ''; 
     $this.text(varNew); 
    }); 
}); 

je le/5/version (pré-références) téléchargés sur http://test.projectdavis.com/test.html alors que le/6/versoin (références) chargé sur http://test.projectdavis.com/test2.html.

Quelqu'un a-t-il un aperçu?

Merci

+1

Quel est exactement lent à ce sujet? le chargement de la page? interagir avec la page? tous les deux? Vous pouvez optimiser un peu en utilisant la délégation d'événement, mais cela ne ferait qu'améliorer l'impact initial, cela n'améliorera pas les interactions avec la page. –

+0

La "lenteur" est ressentie lorsque vous tapez/cliquez sur une case, quand elle exécute la fonction '$ ('. QtyBox'). Click, ainsi que lorsque vous tapez/cliquez sur un bouton pour entrer une quantité, quand elle s'exécute la fonction '$ ('. btn'). click'. – The1nk

+0

@KevinB - Il se charge vraiment bien. Il se peut que le chargement soit lent, mais pas assez lent pour que je le remarque. Lorsque vous appuyez sur/cliquez, les scripts qui s'exécutent sont très lents à répondre. Merci! – The1nk

Répondre

5

j'ai pu tester votre page sur mon iPad 2. Le décalage d'entrée semble être le délai d'événement de clic mobile où cliquez sur événements sont déclenchés après 0,3 secondes sur les navigateurs mobiles (https://developers.google.com/mobile/articles/fast_buttons?hl=de-DE.). Ce délai est tel que le navigateur peut écouter un double tap. Il existe quatre gestionnaires d'événements supplémentaires fournis par le navigateur mobile, celui qui vous intéresse probablement est clickend. L'événement clickend est déclenché lorsque l'utilisateur lève son doigt de l'écran.

Le code ci-dessous est de https://developer.mozilla.org/en-US/docs/Web/Guide/DOM/Events/Touch_events

MDN
var el = document.getElementsById("MyButtonID"); 
el.addEventListener("touchend", handleEnd, false); 
+1

Juste pour quelqu'un d'autre à la recherche - j'utilisais l'événement typique jQuery 'click', et il avait ce lent retard. Lorsque je suis passé à jQuery Mobile et que j'ai changé les événements pour «tapoter», cela a fonctionné sans problème. Merci! – The1nk

+0

J'ai eu ce problème au sein d'une application de backbone, résolu en incluant cette bibliothèque (de sorte qu'il fonctionne sur les appareils iPad et non-touch): https://github.com/nervetattoo/backbone.touch – GotDibbs

Questions connexes