2014-02-14 2 views
0

Я использую selecter jquery. Я инициализировать его, введя кодКак дождаться завершения функции перед выполнением другой функции

$("select").selecter(); 

Мне нужно, чтобы убедиться, что Formstone библиотека Selecter JQuery завершена, прежде чем начать добавление элементов. Так что я сделал это, это использовать функцию $.when

initialize: function(){ 
    $.when($("select").selecter()).then(this.initOptions()); 
}, 

initOptions: function(){ 
    this.$el.find('.selecter').addClass('something'); 
} 

Но это не работает. Как я могу подождать, пока selector selecter делает свое дело, прежде чем я выполню другую функцию?

Спасибо,

UPDATE

Вот обновление того, что я сделал, но он не работает.

initialize: function(){ 
    $("select").selecter({callback: this.initOptions }); 
}, 

initOptions: function(){ 
    this.$el.find('.selecter').addClass('something'); 
} 
+0

Кто-нибудь? ........ – demic0de

ответ

0

Существует вариант обратного вызова.

The function passed as a callback will receive the newly selected value as the first parameter

Должно быть $("select").selecter(callback: function() { alert('callback fired.') }); или, как показано

$("select").selecter({ 
    callback: selectCallback 
}); 

function selectCallback(value, index) { 
    alert("VALUE: " + value + ", INDEX: " + index); 
} 
+0

Спасибо. Я все еще новичок в javascript. Как я могу использовать его? можете ли вы предоставить дополнительную информацию? – demic0de

+0

Во втором примере показано только это - как его использовать. Просто напишите любую функцию и передайте ее имя как параметр во время init $ ("select"). Selecter ({callback: selectCallback}); – i100

+0

Хорошо спасибо, я попробую – demic0de

0

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

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

Создан рабочий стельку для вас http://jsfiddle.net/6Bj6j/

CSS-код из формы. Просто выберите, что появляется, когда вы нажимаете раскрывающийся список. Вы получите предупреждение, которое написано в обратном вызове.

+0

Я получаю SyntaxError: missing: after property id var selectorObj = { – demic0de

0

Проблемы предоставленной кодой является объемом обратного вызова:

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"); 

Sidenote: Я главный разработчик Formstone. Если у вас есть предложения по новым функциям или лучшей реализации, просто откройте новую проблему в GitHub.

Смежные вопросы