Как я мог бы предоставить плагину jQuery несколько предустановленных параметров по умолчанию?

#jquery #plugins #options

#jquery #Плагины

Вопрос:

Скажем, у меня есть плагин 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> тегов и является простым.

Ответ №1:

Перешел к плагину: 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"]});
 

Комментарии:

1. Мне нужно вызвать конкретную опцию из кода триггера плагина. Имеется в виду код, который запускает плагин (внутри тегов <script> )

2. Добавил еще несколько уточнений в нижней части вопроса.

3. Хорошо, мне придется это проверить … потому что я начинал все глубже погружаться в отчаяние, думая, что это невыполнимо, потому что, казалось, ничто не работает так, как я хотел, но, похоже, это делает именно то, что я хотел, и как я изначально думал, что это должно работать.

4. Да, похоже, это действительно работает. Я просто в состоянии шока, потому что это так просто и примерно так, как я себе представлял, как это должно работать … и я пытаюсь сделать это примерно с прошлого вторника : D Я просто пойду и приму это. 🙂

Ответ №2:

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

    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);
 

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

Комментарии:

1. Я не хочу переопределять параметры по умолчанию другим набором параметров по умолчанию или что-то в этом роде. Я хочу иметь наборы параметров по умолчанию, которые можно вызывать для активации из кода триггера (это означает, что одновременно будет активен один набор параметров). В дополнение к этому я хотел бы переопределить их так же, как обычно.. Причина, по которой я упомянул об этом, заключается в том, что мне не нужно решение, которое не позволяет мне этого делать.

2. Добавлено еще несколько уточнений в нижней части вопроса.

3. Единственный способ, которым я могу видеть, что это работает, — это использовать глобальную переменную и назначить ее перед $('.boxes').b({...}); или назначить ее, чтобы поместить параметры в объект, и в качестве родственного брата у вас будет, какой вариант использовать…. посмотрите отредактированный ответ….