[英]Wrap my head around jQuery Plugins
I'm attempting my first jQuery plugin. 我正在尝试我的第一个jQuery插件。
(YAY... about time!) (是的...关于时间!)
I am having a hard time wrapping my head around how I can get a publicly accessible function to fire properly. 我很难全神贯注于如何使公众可以使用的功能正常启动。
(function($, doc, win){
"use strict";
// Our main function
$.fn.ajaxian = function(options){
// Our Settings
var $setts = $.extend({
CallBack: null,
LoadInto: 'body',
LoadSection: null,
LoadingContent: null,
LoadInEffect: 'fade'
}, options);
console.log('Plugin Initialized');
var elements = this;
return {
ManualLoad: function(){
console.log('Manual Fired');
},
elements: function(){
$(this).on('click', function(e){
e.preventDefault();
return $.fn.ajaxian.LoadPage;
});
}
};
};
// Load in a page
$.fn.ajaxian.LoadPage = function(){
console.log('Internal Page Load Initialized');
};
}(jQuery, document, window));
(function($, doc, win){
"use strict";
// Our main function
$.fn.ajaxian = function(options){
// Our Settings
var $setts = $.extend({
CallBack: null,
LoadInto: 'body',
LoadSection: null,
LoadingContent: null,
LoadInEffect: 'fade'
}, options);
console.log('Plugin Initialized');
return this.each(function(){
var $this = $(this);
$this.on('click', function(e){
e.preventDefault();
$.fn.ajaxian.LoadPage();
});
});
};
// Load in a page
$.fn.ajaxian.LoadPage = function(){
console.log('Internal Page Load Initialized');
};
// Manual load in a page
$.fn.ManualLoad = function(){
console.log('Manual Page Load Initialized');
$.fn.ajaxian.LoadPage();
};
}(jQuery, document, window));
jQuery(window).on('load', function(){
// Initialize everything
Initialize(jQuery);
});
var Initialize = function($){
var options = {
CallBack: function(){console.log('Callback Fired')},
LoadInto: '#container',
LoadSection: '#content',
LoaderContent: null,
LoadInEffect: 'fade'
};
$('a:not(.external), button:not(.external), .internal').ajaxian(options);
$('body').ajaxian(options).ManualLoad();
if(location.pathname == '/'){
$('body').ajaxian('init', options);
}
};
Now, while I am getting the Plugin Initialized
in my firebug console, I am getting an error attempting the ManualLoad
. 现在,当我在Firebug控制台中获取
Plugin Initialized
时,尝试ManualLoad
时出现错误。
It states: TypeError: $(...).ajaxian(...) is undefined
它指出:
TypeError: $(...).ajaxian(...) is undefined
What am I doing wrong? 我究竟做错了什么?
Your ajaxian method should return an object that has ManualLoad as a function: 您的ajaxian方法应返回一个具有ManualLoad功能的对象:
$.fn.ajaxian = function() {
// Our Settings
var elements = this;
var $setts = $.extend({}, $.fn.ajaxian.defaults, options);
console.log('Plugin Initialized');
elements.on('click', function(e){
var $clickedElement = $(this);
e.preventDefault();
// do something with clicked element here
});
return {
ManualLoad: function(){
console.log('Manual Fired');
// use elements here
}
}
};
Your ajaxian function is not returning any value! 您的ajaxian函数未返回任何值!
$.fn.ajaxian = function(options){
// Our Settings
var $setts = $.extend({}, $.fn.ajaxian.defaults, options);
console.log('Plugin Initialized');
//should return some value.
};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.