私は JS / JQuery / HTML に比較的慣れていないため、インライン / 匿名関数の使用を避ける方法を探しています。
ここに私が働いているものの例があります:
initialize: function () {
$('section.content').each(this.initWaypoints);
}
initWaypoints: function (index, item) {
$(item).waypoint(function (direction) {
$('.navButton.' + $(item).data('label')).toggleClass('active', direction === 'down');
},{offset: '50%',vertical: true})
$(item).waypoint(function (direction) {
$('.navButton.' + $(item).data('label')).toggleClass('active', direction === 'up');
},{offset: '-50%', vertical: true});
}
私が好むのは次のようなものです:
initialize: function () {
$('section.content').each(this.initWaypoints);
},
initWaypoints: function (index, item) {
$(item).waypoint(this.down, {offset: '50%', vertical: true});
$(item).waypoint(this.up, {offset: '-50%', vertical: true});
},
down: function (direction) {
$('.navButton.' + $(item).data('label')).toggleClass('active', direction === 'down');
},
up: function (direction) {
$('.navButton.' + $(item).data('label')).toggleClass('active', direction === 'up');
}
私の問題は、最初の例と同じスコープではないため、 up および down メソッドが $(item) が何であるかを知らないことです。そして、アイテムを彼らに渡す方法がわかりませんでした。
助けてくれてありがとう。