如何在jquery函数中使用$(this)?

时间:2016-05-09 14:39:58

标签: jquery function this

我试图让这个功能正常工作 - 但是如果它被解雇了,它就没有得到$(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));
    });




2 个答案:

答案 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);
});