jquery - 基于第一个使用数据属性的第二个选择中显示选项

标签 jquery

这是我当前的代码。我想要发生的是,如果第一个选择值是 ETS,那么只有第二个选择中的选项显示其数据游戏属性是否为 ETS,否则如果其 ATS,则仅显示 ATS。

var gameETS = $('#Departure').children("option[data-game=ETS]").clone();
var gameATS = $('#Departure').children("option[data-game=ATS]").clone();

$("#Game").change(function() {
  var value = $(this).val();
  $('#Departure').children().remove();
  $('#Arrival').children().remove();
  if (value == "ETS") {
    $('#Departure').children().append(gameETS);
    $('#Arrival').children().append(gameETS);
  } else {
    $('#Departure').children().append(gameATS);
    $('#Arrival').children().append(gameATS);
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<select class="form-control" id="Game" name="Game" required>
  <option value="ETS">Euro Truck Simulator</option>
  <option value="ATS">American Truck Simulator</option>
</select>

<select class="form-control" name="Departure" id="Departure" required>
  <option value="1" data-game="ETS">Cambridge</option>
  <option value="2" data-game="ATS">Las Vegas</option>
</select>

最佳答案

您的问题是您的 append()selectchildren() (即 option 元素)而不是 select 本身。另请注意,通过使用 empty() 并加入选择器,您可以使逻辑变得更加简单。试试这个:

var $gameETS = $('#Departure option[data-game=ETS]').clone();
var $gameATS = $('#Departure option[data-game=ATS]').clone();

$("#Game").change(function() { 
    $('#Departure, #Arrival').empty().append($(this).val() == "ETS" ? $gameETS : $gameATS);
}).change(); // call change on load to set the values immediately
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<select class="form-control" id="Game" name="Game" required>
  <option value="ETS">Euro Truck Simulator</option>
  <option value="ATS">American Truck Simulator</option>
</select>

<select class="form-control" name="Departure" id="Departure" required>
  <option value="1" data-game="ETS">Cambridge</option>
  <option value="2" data-game="ATS">Las Vegas</option>
</select>

关于jquery - 基于第一个使用数据属性的第二个选择中显示选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38217772/

相关文章:

javascript - 将 for 循环重写为 filter() javascript

javascript - 为什么固定列不能使用数据表工作?

jQuery CSS3 转换无法旋转 DiV

javascript - 将焦点设置到表中的下一个输入字段

javascript - 简化 jQuery 代码 - Slide 和 SlideToggle

javascript - 我如何在 JQuery 中伪造 AJAX 开始/结束事件?

javascript - 上传前获取文件大小

javascript - 自动换行 :break-word alternative?

javascript - 格式化为电话号码

javascript - 使用 jquery 确定 li 内的 "a"元素是否具有 CSS 类