我刚刚开始编写jQuery插件.我写了三个小插件,但我只是简单地将行复制到我的所有插件中而实际上并不知道它意味着什么.有人能告诉我更多关于这些的事吗?也许有一天解释会在编写框架时派上用场:)
这是做什么的?(我知道它以某种方式扩展了jQuery,但还有其他有趣的事情要知道)
(function($) {
})(jQuery);
Run Code Online (Sandbox Code Playgroud)
以下两种编写插件的方法有什么区别:
类型1:
(function($) {
$.fn.jPluginName = {
},
$.fn.jPluginName.defaults = {
}
})(jQuery);
Run Code Online (Sandbox Code Playgroud)
类型2:
(function($) {
$.jPluginName = {
}
})(jQuery);
Run Code Online (Sandbox Code Playgroud)
类型3:
(function($){
//Attach this new method to jQuery
$.fn.extend({
var defaults = {
}
var options = $.extend(defaults, options);
//This is where you write your plugin's name
pluginname: function() {
//Iterate over the current set of matched elements
return this.each(function() {
//code to be inserted here
});
}
});
})(jQuery);
Run Code Online (Sandbox Code Playgroud)
我可能会离开这里,也许意味着同样的事情.我很迷惑.在某些情况下,这似乎不适用于我使用Type 1编写的插件.到目前为止,Type …
有时我会创建一个函数并稍后调用该函数.
例:
function example { alert('example'); }
example(); // <-- Then call it later
Run Code Online (Sandbox Code Playgroud)
不知何故,某些功能无法调用.我必须在里面调用这些函数:
$(function() { });
Run Code Online (Sandbox Code Playgroud)
做什么$(function() {});和(function() { });意味着,什么是这些区别/目的是什么?
有什么区别
$(function(){
});
Run Code Online (Sandbox Code Playgroud)
和
$(document).ready(function() {
});
Run Code Online (Sandbox Code Playgroud) 在谷歌的Chrome浏览器中运行我的(相当复杂的)JavaScript/jQuery应用程序,它似乎$(document).ready会在某些JavaScript文件尚未加载时触发.
相关代码(简化):
在我的HTML文件中
<script>var httpRoot='../../../';var verifyLoad = {};</script>
<script src="../../../globalvars.js"></script>
<script src="../../../storagekeys.js"></script>
<script src="../../../geometry.js"></script>
<script src="../../../md5.js"></script>
<script src="../../../serialize.js"></script>
...
<script src="../../../main.js"></script>
Run Code Online (Sandbox Code Playgroud)
作为除main.js之外的每个.js文件的最后一个语句:
verifyLoad.FOO = true; // where FOO is a property specific to the file
Run Code Online (Sandbox Code Playgroud)
例如
verifyLoad.jquerySupplements = true;
verifyLoad.serialize = true;
Run Code Online (Sandbox Code Playgroud)
在main.js中:
$(document).ready(function() {
function verifyLoadTest (scriptFileName, token) {
if (!verifyLoad.hasOwnProperty(token)) {
console.log(scriptFileName + ' not properly loaded');
};
};
verifyLoadTest('globalvars.js', 'globalvars');
verifyLoadTest('storagekeys.js', 'storagekeys');
verifyLoadTest('geometry.js', 'geometry');
verifyLoadTest('md5.js', 'geometry');
verifyLoadTest('serialize.js', 'serialize');
...
}
Run Code Online (Sandbox Code Playgroud)
令我惊讶的是,我看到其中一些触发器.这与我的理解不符$(document).ready.我错过了什么?