Javascript jquery插件这个。每个都在函数中

Javascript jquery插件这个。每个都在函数中,javascript,jquery,Javascript,Jquery,我试着写一个小的jquery插件。过去我主要使用javascript。 我不懂这个.每个函数。首先,我为$.fn编写了一个新方法。在这个方法中,我想得到所有元素的offset() $.fn.jquerynParalFade = function() { this.each(function() { console.log($(this).offset().top); }); } 这对我来说很好。但是,如果我调整屏幕大小(例如在打开设备时),我希望获得所有元素的新位置。为此,我

我试着写一个小的jquery插件。过去我主要使用javascript。 我不懂这个.每个函数。首先,我为$.fn编写了一个新方法。在这个方法中,我想得到所有元素的offset()

$.fn.jquerynParalFade = function() {
  this.each(function() {
    console.log($(this).offset().top);
  });
} 
这对我来说很好。但是,如果我调整屏幕大小(例如在打开设备时),我希望获得所有元素的新位置。为此,我添加了一个可以在resize上运行的函数

$(window).resize(function() {
  resize();
});
现在我有一个问题,我不能在函数中使用this.each()。相反,我使用
$(this)。每个
。但是如果我这样做,控制台会告诉我
offset()
不是
$(this)
的函数

这就是代码的样子:

function resize(){
  $(this).each(function(index) {
    console.log($(this).offset().top);
  });
}

那么我如何在jquery插件的函数中使用它呢

您必须将
的上下文绑定到您的函数,以使调整大小功能正常工作:

var myResize = resize.bind(this)
myResize() // now it should work
另一种方法是传递上下文:

function resize (context) {
  context.each( ... )
}

$(window).resize(function () { resize(this) })
要阅读的一些概念:


这应该是什么?因为当你调用
resize()
时,你并没有将
这个
设置为任何东西。我真的很想理解它!我想我理解第二个。但它不起作用。控制台告诉我context.each不是一个函数。但没关系,因为我相信第一个更聪明。但是我不理解bind方法。我是否将其绑定到我的调整大小功能?如果是,为什么保存变量的绑定?您是否调用下一行中的新变量?抱歉问了这么多问题!顺便说一句,控制台告诉我,在resize函数内部,这类似于:Window→ file:///C:/xampp/htdocs/parallax/index.html. 这正确吗?因为我期待一个目标?!好的,在阅读了URL之后,我得到了它。他们很有帮助。多谢各位!