2012-07-10 7 views
0

J'ai une petite question que je suis incapable de résoudre;Comment puis-je créer une variable dynamique?

J'ai un div, onTouchEnd devrait exécuter un peu de code jquery (ce qu'il fait parfaitement). Lors de l'exécution de cette fonction, il enverra l'ID de la div particulière.

<div id="tapme1" class="subject hold" onTouchEnd="goes(this.id)"></div> 

Il exécute cette fonction:

function goes(e) { 
    var now = new Date().getTime(); 
    var lastTouch = $(this).data('lastTouch') || now + 1 /** the first time this will make delta a negative number */; 
    var lement = e 
    var delta = now - lastTouch; 
    if(delta<300 && delta>0) { 
     if($('#tapme1').hasClass("hold")) { 
      $('#tapme1').removeClass("hold"); 
     } 
     else { 
     $('#tapme1').addClass("hold"); 
     } 
    } 
    else { 
     // A click/touch action could be invoked here but we need to wait half a second before doing so. 
    } 
    $(this).data('lastTouch', now); 
} 
function goes(e) { 
    var now = new Date().getTime(); 
    var lastTouch = $(this).data('lastTouch') || now + 1 /** the first time this will make delta a negative number */; 
    var lement = e 
    var delta = now - lastTouch; 
    if(delta<300 && delta>0){ 
     if($('#tapme1').hasClass("hold")) { 
      $('#tapme1').removeClass("hold"); 
     } 
     else { 
      $('#tapme1').addClass("hold"); 
     } 
    } 
    else { 
     // A click/touch action could be invoked here but we need to wait half a second before doing so. 
    } 
    $(this).data('lastTouch', now); 
} 

Comme vous pouvez le constater, cela fonctionne parfaitement. Maintenant vient le problème. Je veux qu'il change le div sur lequel on clique. Quand j'ai tourné $('#tapme1') en $(lement) il n'a rien fait. J'ai essayé de nombreuses possibilités.

En espérant que l'un de vous puisse m'aider avec ceci, apprécié!

+0

Veuillez ranger le code. C'est trop compliqué et les retraits le rendent difficile à suivre: alors j'ai juste arrêté de lire. Le codage concerne aussi * hubris *. –

+0

Peut-être une erreur de copier/coller, mais vous avez la fonction va deux fois là-bas. De plus, il vous manque un point-virgule après var lement = e. –

+0

@OllyHodgson Un point-virgule n'est pas nécessaire ici ;-) (J'écris sans point-virgule, mais je suis d'accord en ce que le manque est * incohérent * avec le style choisi.) –

Répondre

3

Il vous manque le # avant le sélecteur d'ID.

changement $(lement)-$("#" + lement)

+0

Pourrais-je ajouter, c'est exactement le problème que j'ai rencontré, vous venez de sauver mon jour monsieur. Merci ( –

0

Puisque vous êtes déjà de passage id, vous devrez changer:

$('#tapme1') 

Pour:

$('#' + lement) 

lement étant l'argument de votre fonction, par exemple la id vous passez.

1

Vous devez utiliser: $ ('#' + souillure)

1

Vous êtes absent '#'

changement à:

$('#' + lement) 

au lieu de:

$(lement) 
1

Pourquoi n'envoyez-vous pas seulement this au lieu de this.id comme paramètre?

<div id="tapme1" class="subject hold" onTouchEnd="goes(this)"></div> 

que vous pouvez utiliser

$(lement) 
+0

) Pourquoi je n'ai pas pensé à ça? –

1

Vous passer l'identifiant, par exemple tapme1. jQuery veut un sélecteur CSS, par ex. #tapme1. Alors changez votre code pour chercher $("#"+lement), ou mieux encore, var lement = "#" + e;.

Questions connexes