Документация по API не очень ясна в отношении аргумента value
, который должен быть при вызове getAdjacentOption(value, direction)
.
Если вы LookUp getAdjacentOption
в источнике selectize.js вы найдете
getAdjacentOption: function($option, direction) {
var $options = this.$dropdown.find('[data-selectable]');
var index = $options.index($option) + direction;
return index >= 0 && index < $options.length ? $options.eq(index) : $();
},
Это говорит нам, что getAdjacentOption
использует метод JQuery .index()
, который принимает селектор или элемент.
Так что вызов obj.getAdjacentOption(2,1)
не может дать ожидаемый результат, потому что вы передаете функцию int в качестве первого аргумента.
Но называть его так, поэтому obj.getAdjacentOption("2",1)
тоже не поможет, даже если "2"
может быть значением вашей текущей выбранной опции.
Чтобы сделать короткий короткий проход в текущем выбранном элементе.
Вот пример
$(document).ready(function() {
var $select = $('select').selectize();
var obj = $select[0].selectize;
obj.refreshOptions(false);
var crnt = obj.getOption(obj.getValue());
console.log("Prev option is:",
obj.getAdjacentOption(crnt,-1).text(),
"with a value of",
obj.getAdjacentOption(crnt,-1).data("value"));
console.log("Next option is:",
obj.getAdjacentOption(crnt,1).text(),
"with a value of",
obj.getAdjacentOption(crnt,1).data("value"));
});
<link href="https://cdnjs.cloudflare.com/ajax/libs/selectize.js/0.12.2/css/selectize.default.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/selectize.js/0.12.2/js/standalone/selectize.js"></script>
<select id='car' name='car'>
<option value='1'>Mercedes</option>
<option value='2' selected>BMW</option>
<option value='3'>Volvo</option>
</select>
Отличный ответ: «refreshOptions (false)» кажется обязательным (без него он не работает), любая идея почему? – dietervdf
ой, и я хотел бы знать, что означает «crnt» :) – dietervdf
'crnt' - это просто аббревиатура от« current », но' curr' или просто 'cur', вероятно, будет лучшим выбором :). 'refreshOptions (false)' действительно необходимо для некоторых методов API-параметров для возврата полезных значений. По крайней мере, когда вы добавляете их в HTML-элементы. Угадайте, что происходит повторная инициализация. – DavidDomain