#jquery #cycle2
#jquery #cycle2
Вопрос:
Я запускаю запрос, чтобы получить ленту новостей в формате JSON, используя getJSON, который затем я помещаю в div, как собственные div для поворота с помощью jQuery Cycle2. Я могу заставить jQuery Cycle2 работать с новостными элементами, когда я жестко кодирую их в div, но когда я добавляю его через getJSON, он не запускается. как я могу изменить динамическое содержимое для загрузки до запуска цикла?
Я даже переместил javascript над jQuery.Cycle2.js но у меня закончились идеи, поэтому мне любопытно, случалось ли с кем-нибудь подобное раньше и как они справляются с этим.
Мой код до сих пор
<div class="cycle-pager news-pager"></div>
<div id="news-area" class="cycle-slideshow oh"
data-cycle-swipe=true
data-cycle-swipe-fx=scrollHorz
data-cycle-fx="scrollHorz"
data-cycle-timeout="8000"
data-cycle-auto-height="calc"
data-cycle-pause-on-hover="true"
data-cycle-pager=".news-pager"
data-cycle-pager-event="mouseover"
data-cycle-slides="> div"
>
</div>
<script>
$.getJSON('https://mydomain.ca/feed/PressRelease.svc/GetPRList?apiKey=XXXX', function(data) {
$.each(data.GetPRListResult, function(i, f) {
var tblRow = "<div class='news-item'><div class='heading date'>" f.PressReleaseDate "</div><h3><a href=https://investors.wfsinc.com" f.LinkToDetailPage ">" f.Headline "</a></h3></div>";
$(tblRow).appendTo("#news-area");
});
});
</script>
Комментарии:
1. Это зависит от того, когда вы запускаете cycle2 — вам нужно дождаться
$.getJSON
возврата и заполнения всего HTML.
Ответ №1:
Автоматическая инициализация не поддерживается для слайд-шоу, которые добавляются в DOM после запуска события ready jQuery.
И:
Вы предпочитаете устанавливать свои параметры через скрипт, а не в разметке? Хорошо, пусть будет по-твоему.
Поскольку .getJSON()
метод является асинхронным, у вас нет другого выбора, кроме как использовать сценарий для создания экземпляра Cycle.
Документация Cycle2 может быть полезной.
Это было бы внутри .getJSON()
обратного вызова.
Обратите внимание, что я не использовал cycle-slideshow
класс, который используется для автоматической инициализации…
<div class="cycle-pager news-pager"></div>
<div id="news-area" class="cycle-slideshow_notInitiated oh">
</div>
<script>
$.getJSON('https://mydomain.ca/feed/PressRelease.svc/GetPRList?apiKey=XXXX', function(data) {
$.each(data.GetPRListResult, function(i, f) {
var tblRow = "<div class='news-item'><div class='heading date'>" f.PressReleaseDate "</div><h3><a href=https://investors.wfsinc.com" f.LinkToDetailPage ">" f.Headline "</a></h3></div>";
$(tblRow).appendTo("#news-area");
});
// Instantiate Cycle here
$(".cycle-slideshow_notInitiated ").cycle({
swipe: true,
"swipe-fx": "scrollHorz",
fx: "scrollHorz",
timeout: 8000,
"auto-height": "calc",
"pause-on-hover": true,
pager: ".news-pager",
"pager-event": "mouseover",
slides: "> div"
})
});
</script>
Комментарии:
1. Спасибо!! это был. cycle-slideshow_notInitiated класс, в котором отсутствовал ключ!! Я делал все, но раньше, но все равно не получалось, пока я не увидел ваше редактирование там с классом notInitiated… Спасибо за помощь!!
2. : D Я видел это при закрытии некоторых дополнительных открытых окон. Кажется, это хороший плагин для слайд-шоу.