#jquery #jquery-plugins
#jquery #jquery-плагины
Вопрос:
Меня попросили попытаться остановить это слайд-шоу при достижении последнего слайда
http://jsfiddle.net/mplungjan/Fakwx/
Вот код, который мне нужно изменить — дополнительным бонусом было бы также получить количество слайдов из объекта
$(function(){
$('#slides').slides({
animationComplete: function(current) {
// how to stop on the last slide:
// a) get the number of slides from the object - called total in the js
// b) call the stop() or pause() on the slideshow object
if (current>=????.total) {
????.stop();
}
},
preload: true,
.
.
});
});
Вот сайт http://slidesjs.com / — Я не нашел ни одного примера, который я мог бы использовать, но люди, хорошо разбирающиеся в jQuery, должны быть в состоянии подсказать мне, как вызвать эту функцию из http://slidesjs.com/js/slides.jquery.js :
function stop() { // clear interval from stored id
clearInterval(elem.data('interval'));
}
Пожалуйста, скажите мне, как вы нашли объект, поскольку я никогда не пытался перечислять методы jQuery.
В обычном JS я бы сделал что-то вроде
var txt = "";
for (var o in object) {
txt = 'n' o ':' object[o]
}
...
но в этом случае я не уверен, как получить доступ к объекту слайд-шоу и выяснить, на чем вызывать stop.
Ответ №1:
«Элемент», на который ссылается stop()
метод, является элементом, к которому было привязано поведение; в данном случае $("#slides")
. По-видимому, скрипт сохраняет повторяющийся интервал, используя data()
метод jQuery. Вот некоторый рабочий код, который извлекает этот интервал, используя тот же data()
метод, и использует количество изображений (минус две кнопки), чтобы определить, когда остановиться.
Примечание: вычисление количества изображений каждый раз неэффективно. Общее количество должно храниться в переменной, но я оставил его в if()
инструкции для ясности.
$(function(){
$('#slides').slides({
animationComplete: function(current) {
// how to stop on the last slide
// a) get the number of slides from the object
// b) call the stop() or pause() on the slideshow object
if (current >= $("#slides img").length - 2) // Subtract Two arrows
clearInterval($('#slides').data('interval'));
},
preload: true,
preloadImage: 'http://slidesjs.com/img/loading.gif',
play: 5000,
pause: 2500,
slideSpeed: 600,
hoverPause: true
});
});
Обновленный JSFiddle: http://jsfiddle.net/Fakwx/2 /
Комментарии:
1. Отлично. Хорошо замечено в отношении данных.
2. Я добавил $(«.pagination»).remove(); $(«.prev»).remove(); $(«.next»).remove(); чтобы удалить стрелки и нумерацию страниц тоже