#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) — НА ЭТОМ МОЙ КОД ОСТАНАВЛИВАЕТСЯ, поскольку, когда я пытаюсь сделать ссылку посещаемой, она не работает