this.offset is not a function within a click function

前端 未结 2 1452
攒了一身酷
攒了一身酷 2021-01-12 02:33

The error is that _this.offset is not a function. I logged this to the console and it was the

  • element I clicked on, so I am confused why
  • 2条回答
    •  离开以前
      2021-01-12 03:17

      this (and hence _this) inside your event handler refers to a DOMElement which doesn't have the offset() method as that's part of jQuery. To fix this you can create a jQuery object using $(this):

      $('.item').click(function(e) {
          var $this = $(this);
          var topx = $this.offset().top;
          var leftx = $this.offset().left;
          var moveArea = $('#replace').offset().top;
          var moveLeft = $('#replace').offset().left;
          var moveUp = topx - moveArea - 50;
      
          $this.css({
              'position': 'absolute',
              'top': moveUp,
              'zIndex': 50,
              'left': leftx
          }).animate({
              top: -50,
              left: moveLeft
          }, 300)
      });
      

      Also note the use of the object provided to a single css() call over multiple calls to the same method.

    提交回复
    热议问题