2014-05-06 55 views
0

这里没有公布整个函数,但基本前提是我试图创建一个带有选项的插件。我不想重写这个函数的整个结构,现在我一直在谷歌搜索了两个小时,没有任何运气。将对象传递给JQuery函数作为选项

这是它看起来像现在:

function slider($rotator_container, settings) { 

    var settings = { 
     auto_rotate : false, 
     auto_rotate_speed : 1000, 
     transition_support : true //Disable this to use JQuery animations only 
    } 
}; 

我正与调用变量如下:

slider("main-slider", {auto_rotate:true, auto_rotate_speed:5000}); 

这工作,如果我把对象的减速和默认的超出了我函数,但问题是我在页面上多次调用它,因此它不需要全局。我如何去做这件事?我需要重写整个函数吗?

+0

你为什么用内部的'settings'变量来影射传递的设置? –

+0

作为一个很好的阅读:http://learn.jquery.com/plugins/advanced-plugin-concepts/ –

+0

@ A.沃尔夫感谢这是一个很好的阅读,认为我可能能够从这里抢东西。 – Hiriji

回答

2

为了有默认选项,你应该使用$ .extend

(function($){ 
    jQuery.fn.extend({ 

     // Plugin Name 
     slider: function(options) { 

      // Defaults options are set here 
      // Every default goes within the { } brackets as seen below 
      // A comma separates the different values 
      var defaults = { 
       auto_rotate : false, 
          auto_rotate_speed : 1000, 
          transition_support : true 

      }; 
      var options = $.extend(defaults, options); 

return this.each(function() { 


}); 
} 

    }); 
})(jQuery); 

然后就可以调用作为

$("div").slider(auto_rotate : true}); 

你的情况如下

可以扩展对象扩展选项
function slider($rotator_container, settings) { 

    var defaultsettings = { 
     auto_rotate : false, 
     auto_rotate_speed : 1000, 
     transition_support : true //Disable this to use JQuery animations only 
    }; 
    $.extend(defaultsettings, settings); 
) 
+0

谢谢我看到了这一点,我尝试了这一点,并且无法重构整个功能,无法使其工作。那么是否有扩展默认选项的方法,因为我在我的问题中构建了默认选项? – Hiriji

+0

如果你是一个函数而不是一个插件,那么你需要$ .extend(object1,object2); – lampdev

+0

谢谢,我会试试看。道歉,我是设计师而不是开发者:) – Hiriji

相关问题