Вопрос

Я пытаюсь jQuery, чтобы рассчитать количество раз, когда идентификатор нажал. Например, если # kwick_1 нажал один раз, я хочу, чтобы он загрузил видео «остальное» ничего не делать.

И я смотрю на применение этого на протяжении всей функции, чтобы одинаково идет на 2, 3, 4 и т. Д.

Как бы я добился этого?

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;
  });
Это было полезно?

Решение

Ты можешь использовать .one() сделать это немного проще, вроде это:

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

Остальные просто оптимизация и сокращение повторного кода, но идея состоит в том, чтобы связать часть, которую вы хотите выполнить только после использования .one(), Затем этот обработчик удалит себя после первого выполнения. Тогда мы связываем return false с использованием .click() С чего нужно всегда случаться. Убедитесь, что это связано после Как пример выше, поскольку обработчики событий работают в порядке, они были связаны.

Также вы могли бы заменить #kwick_1, #kwick_2.... селектор с .kwick Если бы вы могли дать им все класс, это выше все равно будет работать и будет намного проще поддерживать.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top