/ / jQuery: змінити клас після виконання умовного - javascript, jquery, html5, css3, паралакс

jQuery: клас зміни після того, як виконано умовне - javascript, jquery, html5, css3, parallax

Я створив це сайт де у вас є кілька повзунків, що рухаються вертикально, використовуючи цей приклад на stackoverflow> тут <поряд із цим скрипка.

На сайті при завантаженні є переповнення: приховано на корпусі та положення, зафіксоване на моєму основному вмісті, div(div class="content-fs row"). Ідея полягає в тому, що коли ви вперше потрапляєте на сторінку, ви прокручуєте кожен слайд, і як тільки ви натискаєте на останній, позиція змінюється на основному розділі вмісту(div class="content-fs row") від фіксованого до статичного та переповнення: приховане видаляється з тіла. У мене виникають проблеми з написанням умовного висловлювання, яке говорить "якщо його останній слайдер, змініть позицію". Внизу jquery - це код, який я використовую для сайту разом із умовною заявою, яка не працює.

Будь-які вказівки / поради були б вдячні!

jquery:

function scrollLax(){
/*
initialize
*/
var scrollDown = false;
var scrollUp = false;
var scroll = 0;
var $view = $("#portfolio");
var t = 0;
var h = $view.height() - 250;


$view.find(".portfolio-sliders").each(function() {
var $moving = $(this);
// position the next moving correctly
if($moving.hasClass("from-bottom")) {
$moving.css("top", h); // subtract t so that a portion of the other slider is showing
}
// make sure moving is visible
$moving.css("z-index", 10);
});
var $moving = $view.find(".portfolio-sliders:first-child");
$moving.css("z-index", 10);

/*
event handlers
*/

var mousew = function(e) {
var d = 0;
if(!e) e = event;
if (e.wheelDelta) {
d = -e.wheelDelta/3;
} else if (e.detail) {
d = e.detail/120;
}
parallaxScroll(d);
}
if (window.addEventListener) {
window.addEventListener("DOMMouseScroll", mousew, false);
}
window.onmousewheel = document.onmousewheel = mousew;
/*
parallax loop display loop
*/
window.setInterval(function() {
if(scrollDown)
parallaxScroll(4);
else if(scrollUp)
parallaxScroll(-4);
}, 50);

function parallaxScroll(scroll) {
// current moving object
var ml = $moving.position().left;
var mt = $moving.position().top;
var mw = $moving.width();
var mh = $moving.height();
// calc velocity
var fromBottom = false;
var vLeft = 0;
var vTop = 0;
if($moving.hasClass("from-bottom")) {
vTop = -scroll;
fromBottom = true;
}
// calc new position
var newLeft = ml + vLeft;
var newTop = mt + vTop;
// check bounds
var finished = false;
if(fromBottom && (newTop < t || newTop > h)) {
finished = true;
newTop = (scroll > 0 ? t : t + h);
}

// set new position
$moving.css("left", newLeft);
$moving.css("top", newTop);
// if finished change moving object
if(finished) {
// get the next moving
if(scroll > 0) {
$moving = $moving.next(".portfolio-sliders");
if($moving.length == 0)
$moving = $view.find(".portfolio-sliders:last");
//this is where I am trying to add the if conditional statement.
if (".portfolio-sliders:last")
$(".content-fs.row").css({"position": "static"});
if(".portfolio-sliders:last" && (mt == 0))
$("html, body").removeClass("overflow");
} else {
$moving = $moving.prev(".portfolio-sliders");
if($moving.length == 0)
$moving = $view.find(".portfolio-sliders:first-child");
//reverse the logic and if last slide change position
if(".portfolio-sliders:first-child")
$(".content-fs.row").css({"position": "fixed"});
}

}
// for debug
//$("#direction").text(scroll + "/" + t + " " + ml + "/" + mt + " " + finished + " " + $moving.text());

}

}

Відповіді:

1 для відповіді № 1

Ваш код так само просто запитує, чи .portfolio-sliders:last існує. Здається, ви повинні робити:

if ($moving == $(".portfolio-sliders:last") )

або щось уздовж цих рядків, замість того, щоб перевірити, чи активний слайд останній.