javascript - Selectize.js getAdjacentOption() 如何工作?

标签 javascript jquery selectize.js

我一直在使用 selectize.js,但我对 getAdjacentValue() 的使用有点困惑。

在 API 中发现:

getAdjacentOption(value, direction)` Retrieves the jQuery element for the previous or next option, relative to the currently highlighted option. The "direction" argument should be 1 for "next" or -1 for "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 帮助。

最佳答案

API 文档不太清楚调用 getAdjacentOption(value, Direction)value 参数的含义。

如果你在 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"));

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

关于javascript - Selectize.js getAdjacentOption() 如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38422991/

相关文章:

php - Selectize.js:从数据库中预填充项目选择多选

javascript - 滚动主要内容 Div 时可滚动的侧边栏

javascript - 如何使用js或jquery添加基于TIME的div?

jquery - codeigniter 上的 PayPal 付款

javascript - Selectize.js 在 "onItemAdd"回调中获取更多数据

javascript - Selectize 上的 jQuery 工具提示

javascript - jquery 值与格式不匹配

javascript - 正则表达式匹配冒号之前的所有连字符并替换为大写

javascript - 如何扩充现有函数,使其懒惰地展开其参数?

与动态添加的 HTML 元素一起使用时,Javascript 不会触发