javascript - 如何使用javascript,jquery将下拉选项值从后到开始和从开始更改为后

标签 javascript jquery dropdown

我试图根据上一个和下一个按钮更改下拉列表值,但如果选项是下拉列表中的最后一个,我无法转到第一个选项,如果选项是第一个,我无法转到最后一个选项。任何人都可以帮忙。这是 fiddle 代码..

$("#next").click(function() {
  var nextElement = $('#selectBox > option:selected').next('option');
  if (nextElement.length > 0) {
    $('#selectBox > option:selected').removeAttr('selected').next('option').attr('selected', 'selected');
  }
});

$("#prev").click(function() {
  var nextElement = $('#selectBox > option:selected').prev('option');
  if (nextElement.length > 0) {
    $('#selectBox > option:selected').removeAttr('selected').prev('option').attr('selected', 'selected');
  }
});

function currentSlide(selectionValue) {
  console.log(selectionValue);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button type="button" id="prev">Previous</button>
<select id="selectBox" onchange="currentSlide(value);" class="selectpicker">
  <option value="1" class="options">Electronics</option>
  <option value="2" class="options">Clothing</option>
  <option value="3" class="options">Health</option>
  <option value="4" class="options">Food</option>
  <option value="5" class="options">Travel</option>
  <option value="6" class="options">Mobiles</option>
  <option value="7" class="options">Grocery</option>
  <option value="8" class="options">Recharge</option>
  <option value="9" class="options">Furniture</option>
</select>
<button type="button" id="next">Next</button>

最佳答案

尝试使用this solution for loopNext尝试通过编辑相同内容来编写loopPrev代码!

使用prop to set property instead of attr更改下拉列表中的选定值。

$.fn.loopNext = function(selector) {
  var selector = selector || '';
  return this.next(selector).length ? this.next(selector) : this.siblings(selector).addBack(selector).first();
}
$.fn.loopPrev = function(selector) {
  var selector = selector || '';
  return this.prev(selector).length ? this.prev(selector) : this.siblings(selector).addBack(selector).last();
}
$("#next").click(function() {
  $('#selectBox > option:selected')
    .removeAttr('selected')
    .loopNext('option')
        .prop('selected', 'selected');
});

$("#prev").click(function() {
  $('#selectBox > option:selected')
    .removeAttr('selected')
    .loopPrev('option')
        .prop('selected', 'selected');
});

function currentSlide(selectionValue) {
  console.log(selectionValue);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button type="button" id="prev">Previous</button>
<select id="selectBox" onchange="currentSlide(value);" class="selectpicker">
  <option value="1" class="options">Electronics</option>
  <option value="2" class="options">Clothing</option>
  <option value="3" class="options">Health</option>
  <option value="4" class="options">Food</option>
  <option value="5" class="options">Travel</option>
  <option value="6" class="options">Mobiles</option>
  <option value="7" class="options">Grocery</option>
  <option value="8" class="options">Recharge</option>
  <option value="9" class="options">Furniture</option>
</select>
<button type="button" id="next">Next</button>

关于javascript - 如何使用javascript,jquery将下拉选项值从后到开始和从开始更改为后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40714612/

相关文章:

javascript - 如何使用 javascript 通过单击按钮淡出列表?

jquery - 具有多个元素的 Bootstrap 轮播不会移动 1 个图像

append - jQuery 在 $.each() 期间追加元素

javascript - React 下拉菜单一次打开所有下拉菜单

javascript - 当使用 jQuery 切换类时 CSS 样式不会立即应用

javascript - 标题栏中的 Dashlet 编辑按钮未正确显示

javascript - Knockoutjs 可观察对象数组按名称绑定(bind)选择器

javascript - Bootstrap 表单中日期和时间字段的 jQuery 验证

javascript - 想要填充先前选定选项的两个下拉框

Javascript 检测菜单外的点击事件(Vanilla JS)