2015-08-12 4 views
0

Я пытаюсь использовать waypoints.js, чтобы иметь элементы fadein при прокрутке, чтобы поразить элементы.

У меня есть

$(document).ready(function(){ 

$('.card').waypoint(function(down) { 
    console.log('hit element'); 
    $(this).addClass('card-fadeIn'); 
}, { offset: '100%' }); 

}); 

Что это делает добавляет класс «карт-FadeIn», который является непрозрачность 1 и легкость в анимации.

Когда я изменить его на

$('.card').addClass('card-fadeIn'); 

Он отлично работает, но добавляет непрозрачности 1 к каждому классу карты и губит FadeIn эффект. Я пытался использовать $ (this) вместо этого, но он не будет исчезать, и он не даст ошибку в консоли. Любые идеи почему?

+0

Можете ли вы зарегистрировать то, что внутри этой функции? – Harangue

+0

'this' может отличаться от того, что вы думаете. – Johan

+0

'this', вероятно, больше не является областью объектов jQuery. Перед этим сохраните 'this' в некоторой переменной. –

ответ

7

Вы должны использовать

$(this.element) 

в обработчике Waypoint. Таким образом,

$(this.element).addClass('card-fadeIn'); 

должно делать то, что вы хотите.

$(this) работает внутри обратных вызовов jQuery, потому что jQuery предназначен для работы таким образом. В этом нет ничего волшебного, так что если не относится к элементу DOM, вы получите объект jQuery, который ничего не сделает (и который не будет сообщать о каких-либо ошибках, потому что, опять же, это как раз то, Работа jQuery). Библиотека Waypoint связывает this с собственным контекстным объектом и предоставляет ссылку на элемент DOM, участвующий в обратном вызове, как свойство «element».

+0

this.element добавляет в него правильный css, однако он применяет анимацию к каждому элементу .card, я просто хочу, чтобы она срабатывала при прокрутке вниз. – ServerSideSkittles

+0

@ServerSideSkittles Я не понимаю, что вы имеете в виду. Вы не разместили свой HTML-код, и у меня нет хорошей идеи, что именно вы хотите сделать этой страницей. Вы использовали Waypoint раньше? – Pointy

+0

Первый раз, используя путевую точку. У меня есть эта тема http://ashobiz.asia/flatmania151/theme/index.html и хочу воспроизвести эффект на другую тему. Из того, что я могу сказать, тема использует этот точный метод. Я удалил другой js по частям, и все, что он использует, - непрозрачность css, точки jquery и пользовательская функция, аналогичная моей. – ServerSideSkittles

0

Вы попробовали this.element?

$(document).ready(function(){ 

$('.card').waypoint(function(down) { 
    console.log('hit element'); 
    $(this.element).addClass('card-fadeIn'); 
}, { offset: '100%' }); 

});