Я работаю над плагином jQuery и, похоже, не могу изменить настройки по умолчанию, вот фрагмент плагина.
$.Auction = {
defaults: {
parentId: '#span',
bidButtonClassName: '.live_bid'
}
};
$.setAuction = function(options){
startAuction();
}
function startAuction(){
var options = $.extend({}, $.Auction.defaults, options);
alert(options.parentId);
}
$.setAuction({parentId: '#div'});
В основном я пытаюсь переопределить значение parentId внизу, но оно всегда предупреждает значение #span. Есть идеи, что я делаю не так? Спасибо!
2 ответа
Вы передаете {parentId: '#div'}
в качестве аргумента для $.setAction
, но на самом деле не используете его. Вы хотите сделать что-то вроде этого:
$.setAuction = function(options){
startAction(options);
}
function startAction(options){
options = $.extend({}, $.Auction.defaults, options);
alert(options.parentId);
}
Изменить: @TmEllis предлагает лучший способ реализации этой функции, но его можно улучшить, сделав сами параметры по умолчанию настраиваемыми:
(function($)
{
$.fn.setAuction = function(options)
{
options = $.extend({}, $.fn.setAuction.defaults, options);
return this.each(function()
{
alert($(this).id);
});
};
$.fn.setAuction.defaults =
{
bidButtonClassName: '.live_bid'
};
})(jQuery);
См. эту статью для более полного обсуждения того, как писать хорошие плагины jQuery.
Думаю, нужно немного изменить код.
$.fn.setAuction
было бы лучше, чем $.setAuction
(они делают две разные вещи)
Как вы могли сделать:
$("#span").setAuction ({bidButtonClassName:"classname"});
И передайте ему элемент как селектор, а не как параметры плагина (если он не должен быть в параметрах)
Тогда код вашего плагина может выглядеть примерно так:
(function($) {
$.fn.setAuction = function(options) {
var defaults = {
bidButtonClassName: '.live_bid'
};
var options = $.extend(defaults, options);
//or to preserve defaults
var options = $.extend({}, defaults, options);
return this.each(function() {
obj = $(this); //"#span"
alert(obj.id);
});
};
})(jQuery);
Похожие вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript / JS) и его различных диалектах / реализациях (кроме ActionScript). Включите все соответствующие теги в свой вопрос; например, [node.js], [jquery], [json] и т. д.