#javascript #jquery
#javascript #jquery
Вопрос:
Я создаю сайт, который может включать несколько слайд-шоу jQuery на одном сайте. Код слайд-шоу третьей стороны, который я использую, требует, чтобы у каждого слайд-шоу был уникальный идентификатор, который используется в javascript и div, в котором хранятся изображения.
В настоящее время я генерирую случайное число на странице:
var postID = ((Math.random() * 1e6) | 0);)
и в каждом сообщении слайд-шоу я увеличиваю postID на 1:
postID ;
чтобы избежать дублирования чисел. Однако, похоже, что он не использует правильный postID в функции javascript:
$(function() {$("#" postID).webwidget_slideshow_dot({...)})}
Вот ссылка на сайт:http://mobilegamepatterns.com
Буду признателен за любую помощь!
Комментарии:
1. Нам нужно немного больше, чем это. Насколько я могу судить, ваш postID никогда не используется на странице.
2. Здесь:
((Math.random() * 1e6) | 0);)
, почему;
не в конце инструкции?3. Пожалуйста, не начинайте просто новый вопрос из-за небольшой проблемы с предыдущим, который вы задали. Если вы столкнулись с проблемами с кодом, указанным вам в ранее опубликованном вопросе, прокомментируйте этот пост, и люди уточнят ответ, чтобы лучше помочь вам.
Ответ №1:
У вас этот блок в вашем коде дважды:
$("#" postID).webwidget_slideshow_dot({
slideshow_time_interval: '',
slideshow_window_width: '320',
slideshow_window_height: '480',
slideshow_title_color: '#17CCCC',
soldeshow_foreColor: '#000',
directory: 'http://mobilegamepatterns.s3.amazonaws.com/images/'
});
Я думаю, вы думаете, что из-за того, где они расположены на вашей странице, один будет запускаться с первым идентификатором, а другой — со вторым. Но на самом деле, они оба будут выполняться со вторым. Они оба будут запущены после того, как DOM будет готов, и они оба будут использовать текущее значение postID. Поскольку вы меняете почтовый идентификатор во время загрузки страницы, он будет таким, какой он есть после последнего почтового идентификатора .
Если вы собираетесь написать свою страницу таким образом, вам не нужно запускать этот код заранее, а вместо этого запускать его сразу после присвоения div нового идентификатора.
Вы могли бы быть чище и делать все это при загрузке страницы, вообще не используя идентификаторы.
$(function() {
var slideShowDivs = $('.webwidget_slideshow_dot');
$.each(slideShowDivs, function(i, currentDiv) {
$(currentDiv).webwidget_slideshow_dot({
slideshow_time_interval: '',
slideshow_window_width: '320',
slideshow_window_height: '480',
slideshow_title_color: '#17CCCC',
soldeshow_foreColor: '#000',
directory: 'http://mobilegamepatterns.s3.amazonaws.com/images/'
});
}
});
ПРИМЕЧАНИЕ: Приведенный выше код не протестирован. В нем могут быть синтаксические ошибки.