如何在执行另一个函数之前等待函数完成

我正在使用selecter jquery 。 我通过键入代码来初始化它

$("select").selecter(); 

在开始添加元素之前,我需要确保formstone selecter jquery库已经完成。 所以我所做的就是使用$.when函数

 initialize: function(){ $.when($("select").selecter()).then(this.initOptions()); }, initOptions: function(){ this.$el.find('.selecter').addClass('something'); } 

但这不起作用。 在执行另一个函数之前,我如何等待formstone selecter正在做它的事情?

谢谢,

UPDATE

这是我所做的更新,但它不起作用。

 initialize: function(){ $("select").selecter({callback: this.initOptions }); }, initOptions: function(){ this.$el.find('.selecter').addClass('something'); } 

有一个回调选项。

作为回调传递的函数将接收新选择的值作为第一个参数

应为$("select").selecter(callback: function() { alert('callback fired.') }); 或如图所示

 $("select").selecter({ callback: selectCallback }); function selectCallback(value, index) { alert("VALUE: " + value + ", INDEX: " + index); } 

我认为关于回调编辑代码的问题是这可以引用任何东西。 请尝试以下代码

 var selectorObj = { initialize: function(){ $("select").selecter({callback: selectorObj.initOptions }); }, initOptions: function(){ this.$el.find('.selecter').addClass('something'); } }; 

为你创造了一个工作小提琴手http://jsfiddle.net/6Bj6j/

css变形了。 只需选择单击下拉列表时弹出的内容即可。 您将收到一个写在回调中的警报。

提供的代码段的问题是回调的范围:

 var selectorObj = { initialize: function(){ $("select").selecter({ callback: selectorObj.initOptions }); }, initOptions: function(){ // 'this' refers to the "$('.selecter')" jQuery element this.addClass('something'); } }; 

但是,如果您只需要向呈现的元素添加类,则应使用’customClass’选项:

 $("select").selecter({ customClass: "something" }); 

如果您需要做更多,您可以直接访问Selecter元素:

 var $selecter = $("select").selecter().next(".selecter"); $selecter.addClass("something").find(".selecter-selected").trigger("click"); 

旁注:我是Formstone的主要开发人员。 如果您对新function或更好的实现有任何建议,只需在GitHub上打开一个新问题。