将函数应用于数组中的所有项目?

Apply function to all items in an array?

我有一个使用 foreach 循环创建的 ID 列表。我正在使用 jquery 脚本根据另一个下拉框的值更改下拉框的值。我正在尝试更改脚本,使其适用于所有项目而不是单独应用。

我尝试了 for 循环和各种通配符 - 我觉得它应该很容易,但我就是做不到。

<script>
$(function() {
  $("#changeall").change(function() {
    $("#item1").val($(this).val());
    $("#item2").val($(this).val());
    $("#item3").val($(this).val());
  });
});
</script>

这有效,但它只是希望它应用于#item*,这样我就不必将它们全部列出。

非常感谢。

根据请求,随附的下拉菜单:

<?php 
$ii = 1;
foreach ($trails as $trail): ?>
            <h4><?= htmlspecialchars(trail->getAttribute("name")) ?></h4>
              <select name="trailstatusform[]" id="item<?= htmlspecialchars($ii) ?>" class="bww">
                <option selected value="<?= htmlspecialchars($trail->getAttribute("status")) ?>">
                  <?= htmlspecialchars($trail->getAttribute("status")) ?>
                </option>
                <option value="OPEN">OPEN</option>
                <option value="CLOSED">CLOSED</option>
              </select>
<?php 
$ii++;
endforeach; ?>   

<select id="changeall">
  <option value=" "> </option>
  <option value="OPEN">OPEN</option>
  <option value="CLOSED">CLOSED</option>
</select>

您可以在 id 属性上使用 each 和通配符选择器 (^=),或者使用 class 属性选择:

$('#changeall').change(function () {
    var value = $(this).val();
    $("[id^=item]").each(function() { 
        $(this).val(value);
    });
    // or, class-based (this is the preferred way)
    $("select.bww").each(function() { 
        $(this).val(value);
    });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<br>Items:<br>
<select name="trailstatusform[]" id="item1" class="bww">
    <option selected value="status">status</option>
    <option value="OPEN">OPEN</option>
    <option value="CLOSED">CLOSED</option>
</select><p>
<select name="trailstatusform[]" id="item2" class="bww">
    <option selected value="status">status</option>
    <option value="OPEN">OPEN</option>
    <option value="CLOSED">CLOSED</option>
</select>
<hr>

<br>Change all:<br> 
<select id="changeall">
  <option value=" "> </option>
  <option value="OPEN">OPEN</option>
  <option value="CLOSED">CLOSED</option>
</select>

所以使用它们中每个通用的 class 并设置值。

$("#changeall").on("change", function(){
   $(".bww").val(this.value)
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select class="bww">
  <option value=" "> </option>
  <option value="OPEN">OPEN</option>
  <option value="CLOSED">CLOSED</option>
</select>

<select class="bww">
  <option value=" "> </option>
  <option value="OPEN">OPEN</option>
  <option value="CLOSED">CLOSED</option>
</select>

<select class="bww">
  <option value=" "> </option>
  <option value="OPEN">OPEN</option>
  <option value="CLOSED">CLOSED</option>
</select>

<hr/>

<select id="changeall">
  <option value=" "> </option>
  <option value="OPEN">OPEN</option>
  <option value="CLOSED">CLOSED</option>
</select>