我试图在滚动时使div保持粘性,并在一定高度下松开。我在下面的代码中进行了编辑。它可以工作,但是其中的错误影响了其他Jquery脚本的工作。当我检查控制台中的错误时,我得到了:


  Uncaught TypeError:无法读取HTMLDocument上未定义的属性“ top”。


jQuery(function($) {
  $.fn.scrollBottom = function() {
    return $(document).height() - this.scrollTop() - this.height();
  };

  var $el = $('#imgsticky');
  var $window = $(window);
  var top = $el.parent().position().top;

  $window.bind("scroll resize", function() {
    var gap = $window.height() - $el.height() - 170;
    var visibleFoot = 970 - $window.scrollBottom();
    var scrollTop = $window.scrollTop()

    if (scrollTop < top + 50) {
      $el.css({
        top: (top - scrollTop) + "px",
        bottom: "auto"
      });
    } else if (visibleFoot > gap) {
      $el.css({
        top: "auto",
        bottom: visibleFoot + "px"
      });
    } else {
      $el.css({
        top: 60,
        bottom: "auto"
      });
    }
  }).scroll();
});


我该如何解决?

最佳答案

在尝试获取其position之前,请检查jQuery对象是否包含任何元素:

var parentEl = $el.parent();
var top =0;
if (parentEl.length) {
   top = parentEl.position().top;

}

关于javascript - 试图在某个位置使Div粘滞,但未捕获的TypeError破坏了其他代码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51885315/

10-12 16:56