Tôi đang sử dụng đoạn mã sau làm cơ sở cho một plugin Tôi đang làm việc trên một dự án - đó là từ một bài báo trên tạp chí Smashing nằm đây dưới tiêu đề 'A Lightweight Bắt đầu':Làm cách nào để thêm phương thức vào mẫu plugin jQuery này?
http://coding.smashingmagazine.com/2011/10/11/essential-jquery-plugin-patterns/
Nó đã hoạt động tốt cho mục đích của tôi, nhưng phần còn lại của bài viết sẽ tiếp xúc và nói về những tiện ích jQuery UI mà tôi cho rằng tôi cần thư viện jQuery UI mà tôi không thực sự muốn sử dụng .
/*!
* jQuery lightweight plugin boilerplate
* Original author: @ajpiano
* Further changes, comments: @addyosmani
* Licensed under the MIT license
*/
// the semi-colon before the function invocation is a safety
// net against concatenated scripts and/or other plugins
// that are not closed properly.
;(function ($, window, document, undefined) {
// undefined is used here as the undefined global
// variable in ECMAScript 3 and is mutable (i.e. it can
// be changed by someone else). undefined isn't really
// being passed in so we can ensure that its value is
// truly undefined. In ES5, undefined can no longer be
// modified.
// window and document are passed through as local
// variables rather than as globals, because this (slightly)
// quickens the resolution process and can be more
// efficiently minified (especially when both are
// regularly referenced in your plugin).
// Create the defaults once
var pluginName = 'defaultPluginName',
defaults = {
propertyName: "value"
};
// The actual plugin constructor
function Plugin(element, options) {
this.element = element;
// jQuery has an extend method that merges the
// contents of two or more objects, storing the
// result in the first object. The first object
// is generally empty because we don't want to alter
// the default options for future instances of the plugin
this.options = $.extend({}, defaults, options) ;
this._defaults = defaults;
this._name = pluginName;
this.init();
}
Plugin.prototype.init = function() {
// Place initialization logic here
// You already have access to the DOM element and
// the options via the instance, e.g. this.element
// and this.options
};
// A really lightweight plugin wrapper around the constructor,
// preventing against multiple instantiations
$.fn[pluginName] = function (options) {
return this.each(function() {
if (!$.data(this, 'plugin_' + pluginName)) {
$.data(this, 'plugin_' + pluginName,
new Plugin(this, options));
}
});
}
})(jQuery, window, document);
Bây giờ tôi cần thêm phương thức vào điều này nhưng tôi không biết cách làm như vậy.
Phương pháp này cần phải hoạt động theo cách mà trình cắm tạo trên trang có thể thay đổi động bằng cách gọi phương thức với giá trị thông qua bảng điều khiển (điều này sẽ xảy ra thông qua một số quy trình khác , nhưng giao diện điều khiển là tốt cho bây giờ).
Tôi làm cách nào để sửa đổi mã ở trên để cho phép điều này? Hay tôi đang sủa cây sai?
Bất kỳ trợ giúp nào sẽ được đánh giá cao, JavaScript phức tạp có thể khiến tôi hơi lạc trong bóng tối vào những lúc tôi sợ nhưng tôi muốn cố gắng làm những việc như 'thực hành tốt nhất' càng tốt.
Điều này có vẻ tuyệt vời James. Sẽ cho nó một đi ngay bây giờ và lấy lại cho bạn, nhưng rất hứa hẹn tìm kiếm. Cảm ơn. –
Điều này làm việc cho tôi, vì vậy đánh dấu là câu trả lời. –