https://plnkr.co/edit/9oAmucEO0yvYDJJi8tGK?p=previewjqueryを使ってアクティブなクラスを1つだけliに追加する方法は?
こんにちは ユーザーはそれがdiv
をチェックスクロールscrolling.Actuallyは、はい、それは2つのdivのは、ビューポートの二つにあるいくつかの時点でfooter.Butにアクティブクラスを追加した場合、ビューポートで来ている間、私はフッターにアクティブなクラスを追加していますアイテムは、私はこれを得た.IF は、ビューポート内
in viewport or
exit`を入力して任意のイベントwill check
div要素は、その後、私はできる午前
$(function() {
$("#container").scroll(function() {
console.log('scrolling');
$('#container > div').each(function (i, left) {
console.log(this)
console.log($(this))
var md = $(this).attr('data-msid');
console.log($(this).isOnScreen())
if($(this).isOnScreen()){
$('.fC li[data-msidatrr='+md+']').addClass('active');
}else {
$('.fC li[data-msidatrr='+md+']').removeClass('active');
}
})
});
$.fn.isOnScreen = function() {
var win = $(window);
var viewport = {
top: win.scrollTop(),
left: win.scrollLeft()
};
viewport.right = viewport.left + win.width();
viewport.bottom = viewport.top + win.height();
var bounds = this.offset();
bounds.right = bounds.left + this.outerWidth();
bounds.bottom = bounds.top + this.outerHeight();
return (!(viewport.right < bounds.left || viewport.left > bounds.right || viewport.bottom < bounds.top || viewport.top > bounds.bottom));
}
})
あなたは 'active'クラス名を持つべき要素のどれかを決定したいどうすればよいです。ビューポートに入る最後のもの、ビューポートの最大パーセンテージを含む要素、その他のメトリック? –