Путевые точки и Inview, отслеживание нескольких элементов с помощью подстановочного знака
У меня есть несколько разделов на странице с идентификатором как ss-section-story
ss-section-problem
ss-section-solution
и я пытаюсь отследить, когда каждый из этих разделов входит и выходит из области просмотра. Проблема в том, что с текущим кодом, который у меня есть, он отслеживает только первый раздел с идентификатором. ss-section
, Я хочу иметь возможность отслеживать каждый раздел, входящий и выходящий.
JS
var inview = new Waypoint.Inview({
element: $('section[id^="ss-section"]')[0],
enter: function(direction) {
console.log(this.element.id + ' enter');
},
entered: function(direction) {
console.log(this.element.id + ' entered');
},
exit: function(direction) {
console.log(this.element.id + ' exit');
},
exited: function(direction) {
console.log(this.element.id + ' exited');
}
})
Я знаю, что это должно быть отслеживание только первого раздела, потому что на element
вариант ограничен [0]
в этом массиве, но когда я удалю это, я получу неопределенное в этих операторах console.log.
То, что я хотел бы иметь возможность сделать что-то вроде, но это, но, судя по документации, у него нет синтаксиса, как это:
$('section[id^="ss-section"]').Waypoint.Inview({
enter: function(direction) {
console.log(this.element.id + ' enter');
},
entered: function(direction) {
console.log(this.element.id + ' entered');
},
exit: function(direction) {
console.log(this.element.id + ' exit');
},
exited: function(direction) {
console.log(this.element.id + ' exited');
}
})
Любые предложения о том, как я могу отслеживать каждый отдельный раздел, используя только один экземпляр Waypoint.Inview
1 ответ
Во-первых, вы можете сделать коллекцию:
var $collection = $('section[id^="ss-section"]');
Затем сделайте итерацию:
$collection.each(function () {
new Waypoint.Inview({
element: this,
enter: function(direction) {
console.log(this.element.id + ' enter');
},
entered: function(direction) {
console.log(this.element.id + ' entered');
},
exit: function(direction) {
console.log(this.element.id + ' exit');
},
exited: function(direction) {
console.log(this.element.id + ' exited');
}
})
})
Это все. По крайней мере, это работает для меня.