Jquery 可重用函数,用于在用户滚动到元素时将类添加到元素

Jquery 可重用函数,用于在用户滚动到元素时将类添加到元素,jquery,function,scroll,Jquery,Function,Scroll,我需要创建一个函数,当用户滚动到某个元素时,该函数会将一个类添加到该元素中。我知道让它工作的基本思想,但我不能工作的是创建函数,并以某种方式将它绑定到不同的元素 以下是我现在掌握的代码: $(document).ready(function(){ $.fn.showIcon = function() { var $elID = this; $(window).scroll(function() { var height = $(windo

我需要创建一个函数,当用户滚动到某个元素时,该函数会将一个类添加到该元素中。我知道让它工作的基本思想,但我不能工作的是创建函数,并以某种方式将它绑定到不同的元素

以下是我现在掌握的代码:

$(document).ready(function(){
    $.fn.showIcon = function() {
       var $elID =  this;
       $(window).scroll(function() {
          var height = $(window).height() / 1.25;
          var offset = elID.offset().top - height;
          if ($(window).scrollTop() >= offset) {
            $(this).find(".img-responsive").addClass('show');
          }
        });
      }
    $('#icon-1').showIcon();
    $('#icon-2').showIcon();
    $('#icon-3').showIcon();
});
我得到的错误告诉我没有定义elID,所以很明显,函数开头的这一部分没有理解我的目标元素

这是我拥有的最新版本,但我尝试了一系列不同的方法来定位元素的ID,但运气不佳

所以我要做的是,当用户滚动到第1项、第2项或第3项时,会触发showIcon函数

感谢您的帮助,谢谢

////

下面是一个删除$elID变量的更新,但似乎$this部分不希望以我试图获取的元素为目标。我不知道如何获取要应用函数的元素

$(document).ready(function(){
    $.fn.showIcon = function() {

       $(window).scroll(function() {
          var height = $(window).height() / 1.25;
          var offset = $(this).offset().top - height;
          if ($(window).scrollTop() >= offset) {
            $(this).find(".img-responsive").addClass('show');
          }
        });
      }
    $('#icon-1').showIcon();
    $('#icon-2').showIcon();
    $('#icon-3').showIcon();
});

你对上下文有问题-


好吧,我把那个角色拿出来是因为它似乎无关紧要。即使我删除了那个变量,我仍然不能以元素的ID为目标。看看我的更新。我不是说去掉它,我的意思是你有一个名为$elID的变量,在你的函数中,你试图得到elID,这显然是不存在的。是的,我认为真正的原因是我不知道如何针对我应用函数的元素,这就是$elID的意思。很明显,使用这个和$this并没有起到作用,所以我不确定我是否用了完全错误的方式。太好了。答案是有的。
$(document).ready(function(){
  $.fn.showIcon = function() {

   // this here is a jquery object
   var $element =  this; 

   $(window).scroll(function() {

      // this here is the window object
      var $window = $(this);

      var windowHeight = $window.height() / 1.25;
      var offset = $element.offset().top - windowHeight;
      if ($window.scrollTop() >= offset) {
        $element.find(".img-responsive").addClass('show');
      }
    });
  }

  $('#icon-1').showIcon();
  $('#icon-2').showIcon();
  $('#icon-3').showIcon();
});