[英]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.