我试图让这个功能正常工作 - 但是如果它被解雇了,它就没有得到$(this)。我发现这个问题似乎是一个非常相似的问题(How to use $(this) in functions?),但我无法弄清楚为什么它在我的情况下不起作用。
如果有人可以帮助我,那就太棒了。感谢
function scrolll(){
var thiss = $(this).attr('id').substring(1);
var pos = $(this).scrollTop();
// var next = Number(thiss) + 1;
// var prev = Number(thiss) - 1;
count = Number(thiss);
if (pos == 0) {
$(".section#s" + (count - 1)).removeClass( "inactive", 1500, "linear" );
$(this).removeClass( "active", 1500, "linear" );
var count = Number(thiss) - 1;
}
if($(this).scrollTop() + $(this).innerHeight() >= $(this)[0].scrollHeight) {
$(this).addClass( "inactive", 1500, "linear" );
$(".section#s" + (count + 1)).addClass( "active", 1500, "linear" );
var count = Number(thiss) + 1;
console.log("countbefore: " + count);
count++;
console.log("countafter: " + count);
}
}
$('.section1').on('scroll', function() {
console.log(thiss)
scrolll($(this));
});
$('.section2').on('scroll', function() {
console.log(thiss)
scrolll($(this));
});

答案 0 :(得分:0)
$(this)
主要用于与选择器相关的函数。
E.g。
$('.button').click(function(){
$(this).css('color','red');
});
在这种情况下,$(this)将定位.button
选择器。
答案 1 :(得分:0)
最简单的选择是向scrolll
添加一个参数,而不用担心它,例如:
function scrolll(el)
{
var $this = $(el)
var thiss = $this.attr('id').substring(1);
.... etc
$('.section2').on('scroll', function() {
scrolll(this);
});
但您要找的是call
:
function scrolll()
{
....
$('.section2').on('scroll', function() {
scrolll.call(this);
});