Domanda

Sto cercando di jQuery per calcolare la quantità di volte che un ID è stato cliccato. per esempio se # kwick_1 viene cliccato una volta, voglio che caricare il video 'altro' non faccio nulla.

E Cerco ad applicare questo per tutta la funzione in modo dallo stesso vale per 2, 3, 4 ecc.

Come faccio a ottenere questo?

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;
  });
È stato utile?

Soluzione

È possibile utilizzare .one() per fare questo un po 'più facile, in questo modo:

$('#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; });

Il resto è solo l'ottimizzazione e il taglio verso il basso sul codice ripetuto, ma l'idea è quella di legare la parte che si desidera solo accadere una volta utilizzando .one() , allora gestore rimuoverà se stesso dopo la prima esecuzione. Poi stiamo vincolante il return false utilizzando .click() dal momento che uno dovrebbe sempre accadere . Assicurarsi che questo è destinato dopo , come nell'esempio precedente, dal momento che i gestori di eventi vengono eseguiti nell'ordine in cui erano legati.

Inoltre, si potrebbe sostituire il selettore #kwick_1, #kwick_2.... con .kwick se si potesse dare loro tutto una classe, questo sarebbe ancora al di sopra di lavoro e di essere molto più facile da mantenere.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top