2016-05-09 10 views
0

私はこの関数を動作させようとしていますが、起動すると$(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)); 
 
    });

$(this)

答えて

0

最も簡単なオプションは、例えば、それに当接心配scrolllにパラメータを追加していないことですまさにシナリオだ

function scrolll() 
{ 
    .... 

$('.section2').on('scroll', function() { 
    scrolll.call(this); 
}); 
+0

ありがとう、それはまさに私が探していたものでした。 - それは動作します。 –

0

は主セレクタに関連する機能に使用されます。

など。この場合

$('.button').click(function(){ 
$(this).css('color','red'); 
}); 

、$(これは).buttonセレクタを標的とします。

function scrolll(el) 
{ 
    var $this = $(el) 
    var thiss = $this.attr('id').substring(1); 

    .... etc 

$('.section2').on('scroll', function() { 
    scrolll(this); 
}); 

は、しかし、あなたが探していることはcallです:

+0

で使用されていますが、それを共通の関数に渡したいと考えています。 –

関連する問題