【发布时间】:2014-12-12 09:47:45
【问题描述】:
我正在尝试为自己制作一个视差插件,并在网上找到了一个名为 scroll.js 的简单视差插件:
虽然它有一些令人困惑的代码行,但即使对文档进行多次检查也无济于事。 jQuery 文档说 jQuery 中的 data 方法接受 key : Value 对,即使插件中的很多代码是通过引用传递的,我也看不到键:值对的形成。
Google 搜索稍好一些,在 Google 上搜索后,我对 data 方法有了更好的理解,但是在 jQuery 插件中使用 data 方法的情况下,这仍然对我没有帮助,所以这是我的困难。
我没看懂的sn-p代码是:
$.fn[pluginName] = function ( options ) {
return this.each(function () {
if (!$.data(this, 'plugin_' + pluginName)) {
$.data(this, 'plugin_' + pluginName, new Plugin( this, options ));
}
});
};
整个插件源代码都可以在这里找到(别担心!它不到 100 行!不是一个巨大的插件)。 Plugin on Git
现在我对上面这段代码的困难是,到目前为止我在教程等中看到的所有数据方法的例子,data 方法在现实世界插件中的用法是相当不同的。作者在这里真正使用数据功能是为了什么?
除了线:
return this.each(function () {
所有其他代码行,我并不完全自信地理解它们。他们在做什么?
例如。下面的行在做什么?
if (!$.data(this, 'plugin_' + pluginName)) {
检查 'plugin_' + pluginName 是否具有初始化为对象文字的属性?我的假设正确吗?
如果条件返回真怎么办? :
$.data(this, 'plugin_' + pluginName, new Plugin( this, options ));
上面这行代码被执行了,但是它又在做什么呢??
我看到再次使用了 data 方法,关键字 this 用于指向当前元素,'plugin_' + pluginname(我猜这指定了“this”应该指向 'plugin_' + pluginname??? )和最后创建一个新实例。
我对 Jquery 的理解不是很好,我试图猜测或者更确切地说解释这个小sn-p 代码中发生了什么。对不起,如果我的解释离题了。
如果真的有人能来告诉我到底发生了什么,那就太好了。
我问这个问题的一个重要原因是因为我在许多当代 Jquery 插件中看到了类似的 sn-ps 代码。
【问题讨论】:
-
@JamesThorpe 我在谷歌搜索时看到了这一点,但既然你特别指出了这一点,我会去谷歌搜索更多关于差异的信息。
-
@TrueBlueAussie 我还有一个问题:D stackoverflow.com/questions/27499842/…。如果您有空,如果您能回答这个问题,那就太好了。 :)
-
@TrueBlueAussie,我会将您的答案保存在存档中并将其标记为已回答。但我仍在学习 Jquery,所以不能说,我完全理解它,但我猜你就是这样学习的 :)。谢谢。
标签: javascript jquery jquery-data