如何在执行另一个函数之前等待函数完成
我正在使用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上打开一个新问题。