javascript - div 单击时多个选择会发生变化

标签 javascript jquery html function drop-down-menu

我试图在 div 单击时更改多个选择,问题是只有最后一次单击的保持选中,如果有人知道如何解决此问题,我将不胜感激。

编辑: 选择是动态的,所以我不知道会有多少个,因此我无法给它们提供类或 ID,我拥有的唯一数据是选项值。

$("div").on("click", function() {
  $("select").val($(this).data("value"));
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div data-value="1">1</div>
<div data-value="2">2</div>
<div data-value="3">3</div>

<div data-value="a">a</div>
<div data-value="b">b</div>
<div data-value="c">c</div>

<select>
  <option value="1">1</option>
  <option value="2">2</option>
  <option value="3">3</option>
</select>
<select>
  <option value="a">a</option>
  <option value="b">b</option>
  <option value="c">c</option>
</select>

最佳答案

您的data-value值对于这两个选择都无效。如果您尝试设置该选择的选项之一中不存在的值,则不会显示任何值。

您可以使用 :has() 选择器修饰符使其仅更改包含具有该值的选项的选择值。

$("div").on("click", function() {
  let newval = $(this).data("value");
  $(`select:has([value='${newval}'])`).val(newval);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div data-value="1">1</div>
<div data-value="2">2</div>
<div data-value="3">3</div>

<div data-value="a">a</div>
<div data-value="b">b</div>
<div data-value="c">c</div>

<select>
  <option value="1">1</option>
  <option value="2">2</option>
  <option value="3">3</option>
</select>
<select>
  <option value="a">a</option>
  <option value="b">b</option>
  <option value="c">c</option>
</select>

关于javascript - div 单击时多个选择会发生变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51795692/

相关文章:

javascript - 如何允许用户使用此 JQuery 示例关闭幻灯片?

javascript - jQuery Toggle (Expanding Div) 与文本的不一致过渡

javascript - 来自 table<tr> 循环的 HTML/Javascript/jQuery 数据

jquery - First and Second touch a button,如何显示不同时间的图像?

php - 将 HTML Tidy 可执行文件与 php 一起使用,而不是编译

javascript - Bootstrap Collapse Accordion Hover 不一致

javascript - 如何裁剪 canvas.toDataURL

javascript - 如何使用随机 css id 设置元素样式

javascript - 从其他页面链接时,如何偏移 anchor 以针对固定标题进行调整?

javascript - |已解决|从 Firebase 获取用户身份验证数据并将其添加到 Firebase DB