У меня есть два плагина jquery.Давайте назовем их плагином A и плагином B. Я хочу назначить метод из плагина B одной из настроек плагина A. Моя проблема в том, что метод из pluginA.settings.action выполняется, как только он определен в HTML.
<button>Click Me!</button>
<div id="message"></div>
$('button').pluginA({
action: $('#message').pluginB("btnAction")
});
Как я могу сделать это без фактического вызова метода, если он определен в настройках плагина A?
(function($) {
$.fn.pluginA = function(method) {
var $element;
var methods = {
init : function(options) {
settings = $.extend({}, this.pluginA.defaults, options);
return this.each(function() {
$element = $(this);
element = this;
$element.on('click', function(){
settings.action;
})
})
}
}
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 in pluginA plugin!');
}
}
$.fn.pluginA.defaults = {
ajaxUrl: "http://wordpress.com",
eventId: 0,
element: null
}
$.fn.pluginA.settings = {}
$.fn.pluginB = function(method) {
var $element;
var methods = {
init : function(options) {
settings = $.extend({}, this.pluginB.defaults, options);
return this.each(function() {
$element = $(this);
element = this;
})
},
btnAction: function(){
$element.text('The button was clicked!');
}
}
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 in pluginB plugin!');
}
}
$.fn.pluginB.defaults = {
ajaxUrl: "http://wordpress.com",
eventId: 0,
element: null
}
$.fn.pluginB.settings = {}
})(jQuery);