Question

Je suis en train de jQuery pour calculer le nombre de fois une pièce d'identité a été cliqué. par exemple si # kwick_1 est cliqué une fois, je veux charger la vidéo « autre » ne rien faire.

Je cherche à appliquer cette fonction tout au long de la façon la même chose pour 2, 3, 4, etc.

Comment puis-je y parvenir?

var timesClicked = 0;
  $('#kwick_1, #kwick_2, #kwick_3, #kwick_4, #kwick_5, #kwick_6, #kwick_7').bind('click', function(event){
   var video = $(this).find('a').attr('href'); /* bunny.mp4 */

   var clickedID = $(this).attr('id'); /* kwick_1 */
   var vid = 'vid';
   timesClicked++;

   $(this).removeAttr('id').removeAttr('class').attr('id',clickedID + vid).attr('class',clickedID + vid);
   if(timesClicked == 1) {

    $.get("video.php", { video: video, poster: 'bunny.jpg', }, function(data){
     $('.'+clickedID+vid).html(data);
    }); 

   } else {
    /* Do nothing for now */
   }
   return false;
  });
Était-ce utile?

La solution

Vous pouvez utiliser .one() pour faire un peu plus facile, comme ceci:

$('#kwick_1, #kwick_2, #kwick_3, #kwick_4, #kwick_5, #kwick_6, #kwick_7').one('click', function(event){
  var video = $(this).find('a').attr('href'), clicked = this.id + 'vid';

  $(this).attr({ id: clicked, 'class': clicked });
  $.get("video.php", { video: video, poster: 'bunny.jpg', }, function(data){
    $('.'+clicked).html(data);
  }); 
}).click(function() { return false; });

Le reste est juste optimisation et réduisant le code répété, mais l'idée est de lier la partie que vous voulez seulement se produire une fois en utilisant .one() , puis ce gestionnaire va se retirer après la première exécution. Ensuite, nous liant le return false en utilisant .click() depuis que l'on devrait toujours se . Assurez-vous que cela est lié après comme dans l'exemple ci-dessus, car les gestionnaires d'événements sont exécutés dans l'ordre dans lequel ils étaient liés.

Aussi, vous pouvez remplacer votre sélecteur de #kwick_1, #kwick_2.... avec .kwick si vous pouvez leur donner toute une classe, ce serait surtout encore du travail et beaucoup plus facile à maintenir.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top