ok là kinda mới để bổ sung i đã sử dụng nhiều trong các dự án của tôi, tôi cũng đã viết plugin cơ bản mà chỉ làm việc trên các yếu tố với các tùy chọn:tạo một plugin jquery với nhiều chức năng
(function($){
$.fn.pulse = function(options) {
// Merge passed options with defaults
var opts = jQuery.extend({}, jQuery.fn.pulse.defaults, options);
return this.each(function() {
obj = $(this);
for(var i = 0;i<opts.pulses;i++) {
obj.fadeTo(opts.speed,opts.fadeLow).fadeTo(opts.speed,opts.fadeHigh);
};
// Reset to normal
obj.fadeTo(opts.speed,1);
});
};
// Pulse plugin default options
jQuery.fn.pulse.defaults = {
speed: "slow",
pulses: 2,
fadeLow: 0.2,
fadeHigh: 1
};
})(jQuery);
ở trên làm việc ok, nhưng rõ ràng là nó thực hiện một nhiệm vụ, lý tưởng tôi muốn để có thể thực hiện nhiều nhiệm vụ trong vòng một plugin vì vậy tôi có thể sử dụng:
$('#div').myplugin.doThis(options);
$('#div').myplugin.doThat(options;
lý do là tôi có khá một kịch bản lớn mà ajax khác nhau gọi để lưu dữ liệu và dữ liệu truy vấn từ cơ sở dữ liệu (sử dụng tệp php bên ngoài) tôi muốn tôi ntergrate tất cả các chức năng này vào một plugin, nhưng tôi không biết cấu trúc tốt nhất để sử dụng cho nó, ive nhìn rất nhiều hướng dẫn và về cơ bản chiên bộ não của tôi, và tôi bối rối như thế nào tôi nên đi về làm điều này.
là nó chỉ là vấn đề của việc tạo ra một chức năng mới như:
$.fn.pluginname.dothis = function(options){
return this.each(function() {
//execute code
};
};
bất kỳ gợi ý về điều này, hoặc một mẫu để tôi bắt đầu sẽ thực sự hữu ích.
mãi mãi cần trợ giúp !!!
vấn đề tiếp theo:
(function($){
// Can use $ without fear of conflicts
//var gmap3plugin = $.fn.gmap3plugin;
var obj = this; // "this" is the jQuery object
var methods = {
init : function(options){
var lat = $.fn.gmap3plugin.defaults[lat];
var lng = $.fn.gmap3plugin.defaults[lng];
alert('init'+' lat:'+lat+' --- lng:'+lng);
},
show : function() { },
hide : function() { },
update : function(content) { }
};
$.fn.gmap3plugin = function(method){
// Method calling logic
if (methods[method]) {
return methods[ method ].apply(this, Array.prototype.slice.call(arguments, 1));
} else if (typeof method === 'object' || ! method) {
return methods.init.apply(this, arguments);
} else {
$.error('Method ' + method + ' does not exist on jQuery.tooltip');
};
};
$.fn.gmap3plugin.defaults = {
mapdiv :'#mapdiv',
region : 'uk',
lat : 53.4807125,
lng : -2.2343765
};
})(jQuery);
này đang hoạt động và nhận được chức năng quyền đó được thông qua, nhưng làm thế nào để truy cập vào các giá trị trong $ .fn.gmap3plugin.defaults mã trong phương thức init của tôi trả về undefined cho lat và lng
init : function(options){
var lat = $.fn.gmap3plugin.defaults[lat];
var lng = $.fn.gmap3plugin.defaults[lng];
alert('init'+' lat:'+lat+' --- lng:'+lng);
},
hoặc tôi không thể truy cập dữ liệu trong $ .fn.gmap3plugin.defaults từ một hàm ???
hmm ok, tôi nghĩ rằng kiến trúc plugin jqueryui đề cập đến điều gì đó abpout đó, tôi đã đọc nhưng nó chỉ để lại cho tôi trong trạng thái nhầm lẫn !!bất kỳ hướng dẫn tốt nào bạn có thể chỉ cho tôi hướng tới? –
Nhìn vào chỉnh sửa tôi đã thực hiện – Samuel
cảm ơn samuel tôi sẽ có một đi và xem nơi tôi nhận được, nó chắc chắn trông để makew ý nghĩa hơn so với các bài viết khác tôi đã đọc. –