Объект динамических параметров для плагина jQuery (примеры)

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

Я имею в виду, что мне нужно иметь возможность пройти:

$('div').somePlugin({title : 'title1', label : function(element){}, etc.});

а также

$('div').somePlugin({name : 'name1', url : function(element){},
                     event : 'event1', etc.});

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

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

Спасибо.


person pthesis    schedule 14.12.2009    source источник
comment
Лучше всего начать здесь, на StackOverflow, с лучшей стороны. Лучший способ сделать это — отметить ответы как принятые, щелкнув зеленую галочку рядом с ответом. Вопрос, который вы задали ранее: stackoverflow.com/ @cletus правильно ответил на вопросы/1897553/ и должен быть принят. Просто пытаюсь вам помочь :) Кстати, добро пожаловать в SO!   -  person Doug Neiner    schedule 14.12.2009
comment
Не знала об этом, спасибо, что сказали! Сделал, и спасибо за приветствие. Я с нетерпением жду возможности внести свой вклад в ближайшее время!   -  person pthesis    schedule 14.12.2009


Ответы (2)


Используйте оператор typeof:

jQuery.fn.somePlugin = function(p) {
  if (typeof p == "function") {
    var params = p();
  } else if (typeof p == "object") {
    var params = p;
  } 
  return this.each(function(){
    // use params
  });
};

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

person cletus    schedule 14.12.2009
comment
В моей ситуации p — это объект, который содержит свойства, которые являются одновременно объектами и функциями, поэтому буду ли я перебирать p, используя $.each? - person pthesis; 14.12.2009
comment
Вы могли бы сделать, но ваш вопрос недостаточно конкретен, чтобы я мог понять, что именно вы пытаетесь сделать. - person cletus; 14.12.2009
comment
Я работаю над плагином jQuery для Woopra. Я думаю, что у меня проблема исправлена. Я очень ценю вашу помощь! - person pthesis; 14.12.2009

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

  1. Я помог написать это и создать опцию обратного вызова navigationFormatter: AnythingSlider. Примечания о том, как работает параметр navigationFormatter, находятся в верхней части источника. файл.

  2. Второй — автозаполнение jQuery. formatItem, formatMatch и formatReturn все используют аналогичный шаблон.

person Doug Neiner    schedule 14.12.2009
comment
Спасибо Дуг. Я смотрю на оба этих плагина. - person pthesis; 14.12.2009