Pregunta

Estoy tratando de jQuery para calcular la cantidad de veces que un documento de identidad se ha hecho click. por ejemplo, si # kwick_1 se hace clic una vez, quiero que se cargue el video 'otra cosa' no hacer nada.

Y yo estoy mirando a aplicar esto a través de la función de lo que el mismo va para 2, 3, 4, etc.

¿Cómo puedo lograr esto?

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;
  });
¿Fue útil?

Solución

Se puede usar .one() para hacer esto un poco más fácil, así:

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

El resto es sólo la optimización y la reducción en el código repetido, pero la idea es unir la parte que sólo quiere pasar una vez usando .one() , entonces ese manejador se borrará después de la primera ejecución. Entonces estamos unión del return false usando .click() ya que uno debe siempre suceder . Asegúrese de que este está obligado después como el ejemplo anterior, ya que los controladores de eventos se ejecutan en el orden en que fueron obligados.

También se podría reemplazar el selector de #kwick_1, #kwick_2.... con .kwick si se les puede dar a toda una clase, esto por encima aún funcionaría y sería mucho más fácil de mantener.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top