Jquery -选择未禁用的select中的最后一个选项(Safari)

xwbd5t1u  于 2023-01-20  发布在  jQuery
关注(0)|答案(2)|浏览(136)

从此select中:

<select>
    <option disabled>Value 1</option>
    <option disabled>Value 2</option>
    <option>Value 3</option>
</select>

如何将最后一个不是disabled的项目标记为 * 选定 *?
我想制作的示例如下:
x一个一个一个一个x一个一个二个x
如果我在Safari中单击该按钮,第一个项目仍然处于选中状态,而400x400项目应该处于选中状态。
谢谢。

oug3syen

oug3syen1#

这里不需要jQuery;简单的路径查询就足够了:

console.log(document.querySelector('#foo option:not([disabled])'))
<select id="foo">
    <option disabled>Value 1</option>
    <option disabled>Value 2</option>
    <option>Value 3</option>
</select>
qgelzfjb

qgelzfjb2#

现在是2023年,你肯定不需要jQuery。
使用元素属性而不是动态操作属性。这似乎让Safari很满意。

const allowed = new Set(["300x300", "400x400"]);

const options = Array.from(document.querySelectorAll("option"));

document.querySelector("button").addEventListener("click", (e) => {
  options.forEach((option) => {
    option.disabled = !allowed.has(option.value);
  });
  const lastEnabled = options.findLast(({ disabled }) => !disabled);
  if (lastEnabled) {
    lastEnabled.selected = true;
  }
});
<select>
    <option>100x100</option>
    <option>200x200</option>
    <option>300x300</option>
    <option>400x400</option>
    <option>500x500</option>
</select>

<button type="button">Select only the 300x300 and 400x400</button>
  • jQuery答案 *...

一个二个一个一个

相关问题