jQuery插件的动态选项对象(示例)

时间:2009-12-14 04:10:38

标签: jquery plugins jquery-plugins object options

是否有人知道任何可以使用动态选项对象的jQuery插件?

我的意思是,我需要能够传入:

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

以及

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

因此,options对象需要能够拥有可变数量的项,键名和值,这些项可以是静态的或函数的。如果它是一个函数,我需要能够在从插件传回值之前评估函数。

我意识到如果没有进一步的细节,你们很难真正提供帮助,这就是为什么我认为我应该看看我是否可以从任何可能已经存在类似事例的例子中学习。

感谢。

2 个答案:

答案 0 :(得分:1)

使用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
  });
};

如果传入一个对象,它可以有变量属性(名称和数字),其值可以很容易地是函数,对象,简单值等等。

答案 1 :(得分:0)

有两个插件可以使用类似的模式。

  1. 我帮助编写了这个,并构建了回调navigationFormatter选项:AnythingSlider。有关navigationFormatter选项如何运作的说明位于source file的顶部。

  2. 第二个是jQuery AutocompleteformatItemformatMatchformatReturn都使用类似的模式。