Как я могу дать плагину jQuery несколько предустановленных опций по умолчанию? - PullRequest
2 голосов
/ 31 октября 2011

Скажем, у меня есть плагин jquery с опциями по умолчанию, которые можно переопределить, как и любой плагин.

Что я хочу сделать, это добавить несколько параметров по умолчанию, которые можно вызывать с помощью параметров или где-то в плагине «триггер». Вопрос .. Как?

Jsfiddle как бы объясняет это далее: http://jsfiddle.net/A7LMc/

Как работает этот плагин, совершенно не имеет отношения к вопросу.



По сути, что-то вроде этого:

    if ( option == 'b' ) { 
         var defaults = {
            width: '260',
            height: '120'
        }; 
    }
    else {
        var defaults = {
            width: '60',
            height: '10'
        };
    }

и затем назовите его в опциях примерно так:

<script type="text/javascript">
$(document).ready(function() {
    $('.boxes').b({
    option: 'b',
    width: '500'
    });
}); 
</script>


Для уточнения:

Это работает, но это не то, что я хочу:

http://jsfiddle.net/A7LMc/1/ (в js)

========

Это не работает и более или менее то, что я хочу:

http://jsfiddle.net/A7LMc/2/ (в html)

.. причина, по которой я сказал «более или менее», заключается в том, что… ну, это не работает, и мне все равно, как я могу это вызывать, пока в коде запуска триггера находится внутри <script> тегов и просто.

Ответы [ 2 ]

2 голосов
/ 31 октября 2011

Перемещено в плагин: http://jsfiddle.net/A7LMc/3/

    if ( options.option == 'b' ) {
         var defaults = {
            width: '260',
            height: '120'
        };
    }
    else {
        var defaults = {
            width: '60',
            height: '10'
        };
    }

А потом:

$('.boxes').b({
option: "b",
width: '500'
});

var optiondefault = "width:500";
var optiona = { width: 260, height: 120, optiondefault  }
var optionb = { width: 60, height: 10, optiondefault }

$('.boxes').b({optiona});

Иначе почему бы не сделать это внутри плагина?

Или вы можете сделать это в виде массива, подобного этому ...

var options = {
                a:{ width: '100', height:'100' },
                b: { width: '100', height:'100' }
            };

$('.boxes').b({options["a"]});
0 голосов
/ 31 октября 2011

Это ответ на ваш комментарий, а не на ваш вопрос,

   obj =  {
       a : {
          width: '100',
          height: '100'
       },
       b : {
          width: '200',
          height: '200'
       },
    }
//obj.a.width >>>> 100
//obj.b.width >>>> 200

ИЛИ

obj = {
  [
     { width: '100', height:'100' },
     { width: '200', height:'200' },
  ]
}

// obj.[0].width >>> 100
// obj.[1].width >>> 200

что касается вашего вопроса, jquery уже делает это для вас, чтобы переопределить параметры по умолчанию с параметрами, предоставленными в обратном вызове,

если вы хотите, чтобы несколько опций переопределяли его снова, глупо, потому что кто-то захочет переопределить то, что они переопределяют уже при одном и том же обратном вызове ...

ОБНОВЛЕНИЕ

вот ваш последний вариант

obj = {
    options : {
         option_a : {width: '',height:''},
         option_b : {width: '',height:''}
    },
    use_option: 'b'
}

$('.boxes').b(obj);

таким образом, вы можете управлять им в своем виджете / расширенном плагине

...