Я пытаюсь захватить идентификатор элемента путевой точки, а затем добавить это значение идентификатора как класс в тело, когда прокрутка достигает этой путевой точки. Однако это не работает.
HTML
<body class="bg-1">
<div id="content">
<div class="cover">
<h2>Title</h2>
<p class="keep-scrolling">Keep scrolling along</p>
</div>
<section class="stats">
<article id="bg-1">
/* stuff */
</article>
<article id="bg-2">
/* stuff */
</article>
<article id="bg-3">
/* stuff */
</article>
<article id="bg-4">
/* stuff */
</article>
</section>
</div>
</body>
Javascript
$(function() {
$("article").waypoint(function(direction) { //callback when waypoint is reached, with direction of scroll as a parameter
var $this = $(this); // caching the waypoint element
if($this.attr("id") == "bg-1") {
$("body").removeClass();
$("body").addClass('bg-1');
} else if($this.attr("id") == "bg-2") {
$("body").removeClass();
$("body").addClass("bg-2");
} else if($this.attr("id") == "bg-3") {
$("body").removeClass();
$("body").addClass("bg-3");
} else if($this.attr("id") == "bg-4") {
$("body").removeClass();
$("body").addClass("bg-4");
} else {
$("body").addClass("bg-1");
};
});
});
Я несколько способ захватить ID, но не может получить правильный синтаксис.
Это здорово, спасибо! Однако я прочитал [этот ответ] (http://stackoverflow.com/questions/1424981/how-to-remove-all-css-classes-using-jquery#1424991) о '.removeClass()' не нуждающийся в параметр. Кроме того, я узнал [отсюда] (http://imakewebthings.com/waypoints/guides/jquery-zepto/), что вы можете передать параметр обработчика в качестве первого аргумента для путевой точки. – mapk
@mapk Да, вы правы с помощью removeClass. Я это испортил. Но '$ (this)' в обработчике-функции не содержит путевую точку. «Это» - это объект путевой точки, содержащий фактический элемент. – empiric
Спасибо за разъяснение. – mapk