Как добавить события jquery в добавленные классы?

#javascript #jquery #dynamic #image-gallery

#javascript #jquery #динамический #изображение-галерея

Вопрос:

Я пытаюсь создать галерею изображений, я использую цифры вместо стрелок влево / вправо. На данный момент я пытаюсь заставить его работать только с 2 изображениями (т. е. с 2 числами)

это html . страница идентификатора — это выделенный номер

  <div class="grid_1 pagelink" id="page"><p><a href="">1</a></p></div> 
<div class="grid_1 pagelink"><p><a href="">2</a></p></div> 
  

при первой загрузке страницы приведенный ниже код работает. итак, когда я нажимаю на ссылку 2, приведенный ниже код выполняется нормально. Но тогда я хочу, чтобы тот же код запускался при обратном нажатии на первую ссылку; но когда я это делаю, страница обновляется, игнорируя приведенный ниже код:

  $('.pagelink').live('click', function(e){
    e.preventDefault();
        var frame = $(this).text() - 1;
        var frames =     240 * frame;
    //  $('#gal').animate({marginLeft:'500px'},'slow'); 
        $('#gal').animate({marginLeft:  " =" frames 'px'},'slow');
    $(this).attr('id', 'page').removeClass('pagelink');
    $('#page').addClass('pagelink').removeAttr('id','page');
       // $('#book').animate({    left: '50'  });
    })
  

Я думал, что .live () сделает это за меня, но это не работает.

Я надеюсь, что вы могли бы помочь

Спасибо

Комментарии:

1. Я пытаюсь сделать подобное и сталкиваюсь с аналогичной проблемой. Событие уже привязано при первом нажатии на ссылки для загрузки галереи, поэтому, когда я возвращаюсь в галерею, оно хочет запустить новую привязку события и не работает.

Ответ №1:

Предыдущее, это связано с тем, что вы удаляете класс ссылки «pagelink», который использовался для сопоставления события нажатия.

Кроме того, используйте другой класс вместо идентификатора (#page) для идентификации ссылки #page, идентификатор может быть проблемой, если он уже присвоен другой ссылке. Нравится

 $(this).removeClass('pagelink').addClass('page');
$('.page').addClass('pagelink').removeClass('page');
  

Комментарии:

1. Сначала я тоже так подумал. Но оказывается, что после установки обработчика события click изменение класса не имеет значения. пример: jsfiddle.net/WDWqT/3

2. только что понял проблему, смотрите ответ снова

3. @mazz: да, при обычном нажатии это так, но live работает по-другому, и в этом случае удаление класса приведет к поломке обработчика событий: jsfiddle.net/8gLkC

4. Ой, упс, не видел .live

5. @Naren: Я думаю, у вас был правильный ответ раньше. Хотите вернуть это, чтобы мы могли проголосовать за это?

Ответ №2:

live должен работать нормально. я думаю, что у вас ошибка в вашем коде, и, вероятно, она здесь:

 $(this).attr('id', 'page').removeClass('pagelink');
$('#page').addClass('pagelink').removeAttr('id','page');
  

чего именно вы пытаетесь достичь с помощью этого кода?

когда вы нажимаете на страницу 2, вы устанавливаете идентификатор div равным page , но теперь у вас есть 2 элемента с идентификатором страницы, и когда вы выбираете этот идентификатор, вы получаете первый (т. Е. страницу 1), но вы все равно удаляете класс pagelink со страницы 2

другими словами, ошибка заключается в том, что в какой-то момент у вас будет 2 элемента с одинаковым идентификатором (и идентификаторы должны быть уникальными, кстати), поэтому, когда вы выбираете этот идентификатор с помощью $('#page') , вы всегда получаете первый

Комментарии:

1. получается, что в первой строке я добавляю идентификатор #page ко 2-й ссылке и удаляю ссылку на страницу, затем по первой ссылке я добавляю #pagelink и удаляю страницу — #page {это выделенный div} и #linkpage{это обычный div} — при загрузке страницы выделяется первая ссылка — затем, когда я выделяю 2-ю ссылку, я не могу получить первую ссылку для выделения при нажатии

2. идентификатор #страница = состояние посещено, ссылка на страницу класса = нормальное состояние, поэтому ссылка 2 перед тем, как я на нее нажму — это нормально, после того, как я на нее нажму, она будет посещена (#страница) — в то же время мне нужно удалить идентификатор # страница из link1. Теперь link2 посещен (#страница), а link1 работает нормально (#pagelink) — НА ЭТОМ МОЙ КОД ОСТАНАВЛИВАЕТСЯ, поскольку, когда я пытаюсь сделать ссылку посещаемой, она не работает