我一直在使用selectize.js,但我对getAdjacentValue()
的使用感到有些困惑。
在API中找到:
getAdjacentOption(value,direction)`检索相对于当前突出显示的选项的上一个或下一个选项的jQuery元素。 “direction”参数应为1表示“next”或-1表示“previous”。
最小的工作示例,jsFiddle。
<select id='car' name='car'>
<option value='1'>Mercedes</option>
<option value='2' selected>BMW</option>
<option value='3'>Volvo</option>
</select>
和.js
$('select').selectize();
var obj = $('select')[0].selectize;
但是如何获得当前所选项目的下一个和上一个值? 我不知道如何实现API帮助。
答案 0 :(得分:2)
API文档不清楚调用value
时假设getAdjacentOption(value, direction)
参数是什么。
如果您在selectize.js的来源中查找getAdjacentOption
,您会找到
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"));
});
&#13;
<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>
&#13;
答案 1 :(得分:0)
为了改进DavidDomain所说的内容,我有一个按钮可以转到select中的下一个值,所以我这样做了:
$('#btnNext').click(function(){
var $select = $('#ddlClients').selectize();
var obj = $select[0].selectize;
obj.refreshOptions(false);
var crnt = obj.getOption(obj.getValue());
var next = obj.getAdjacentOption(crnt, 1).data("value");
obj.setValue(next); //here is where the value is setted as selected
});
这样,当我点击“下一步”按钮时,下拉菜单中的下一项设置为已选中。