2013-07-27 2 views
0

Поэтому у меня есть простой список выбораTwitter Bootstrap SelectPicker OnChange функция не вызывается

<select id="themes" class="selectpicker"> 
    <option selected>mkl-ambiance</option> 
    <option>default</option> 
    <option>ambiance</option> 
    <option>blackboard</option> 
</select> 

и небольшой Snippit из JQuery

$("#themes").change(function() { 
     var theme = $("#themes").val(); 
     editor.setOption("theme", theme); 
    }); 

если удалить class="selectpicker" от выбора обратного вызова работает ожидается. Я даже добавил onchange="doMyFunction и изменил $("#themes").change(function() { на function doMyFunction() {, и это еще не сработало. Есть ли какая-то маска начальной загрузки, которую я пропускаю, чтобы заставить ее работать правильно?

+0

да, жаль, что моя опечатка здесь. Это .change на странице, но все равно нет обратного вызова – Tim

+0

Я думаю, что получил. по-видимому, он вызывался, но не получал действительного значения от выбора. Я редактировал следующее: var theme = $ ("# theme"). val() в var theme = # (тема: selected). text() и он начал работать. – Tim

ответ

3

Это потому, что Selectpicker генерирует <ul> и <li> теги и сохраняет <select> и <option> в сторону. Он добавляет атрибут rel к каждому элементу <li>, чтобы узнать, какая опция выбрана в отношении выбранного <li>.

В любом случае, вы должны использовать либо официальное событие OnChange из плагина Selectpicker, или сделать что-то вроде следующего:

$('ul.dropdown-menu.selectpicker li').on('click', function() { 
    var selectedValue = $($('select.selectpicker option')[$(this).attr('rel')]).val(); 
}); 
Смежные вопросы