Плагин jQuery не переопределяет значения по умолчанию - PullRequest
0 голосов
/ 02 августа 2010

Я работаю над плагином 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 ]

1 голос
/ 02 августа 2010

Я думаю, вам нужно немного изменить код.

$.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);
1 голос
/ 02 августа 2010

Вы передаете {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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...