繁体   English   中英

在.each()调用中使用this而不是$(this)

[英]using this rather than $(this) in an .each() call

过去的一天,我已经做了大量的阅读工作,以更深入地了解this与$(this)以及JS在解释时如何确定这一点,但是我仍然无法弄清楚插件的一个细节分析以加深我的知识:

$.fn.plugInName = function(options) {
  return this.each(function() {
    new $.plugInName(this,options);
  });
};

我读过的所有内容都表明,尽管this.each()用于调用JQuery.prototype.each(),但在each()函数中,每个对象都应称为$(this),但是上面使用的是常规ol'这,我不知道为什么。 $ .plugInName声明如下所示:

$.plugInName = function(el,options) {
  ...
}

任何人可能拥有的任何见解都会有很大的帮助。

编辑: 这是GitHub的完整源代码

MDN

当将函数作为对象的方法调用时,该函数将设置为调用该方法的对象。

当您致电类似

$('#myDiv').plugInName()

该函数被称为jQuery对象$('#myDiv') 因此,在这种情况下, this已经指向jQuery对象,因此我们不需要额外的$()包装器。

我们确实需要$()一种常见情况是绑定事件。

$('#myDiv').on('click', function(){
    alert('You clicked my div!');
});

此处的区别在于,该函数不是在$('#myDiv')上调用,而是在它所属的DOM元素上调用。 因此, this是一个DOM对象,而不是jQuery对象。


在传递给each的回调函数内部, this是指DOM元素,它不是jQuery对象。这正是$.plugInName想要的。 它需要一个DOM元素。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM