使用 jquery 在多组下拉列表中选择第一个选项

发布于 2024-11-29 20:15:42 字数 1278 浏览 2 评论 0原文

我的下拉菜单与此非常相似:

<select id='someSelect'>
    <option value="0">---select one---</option>
    <optgroup label="Bikes">
        <option value="B-4">Hayabusa</option>
        <option value="B-2">GSXR</option>
        <option value="B-3">Ninja</option>
        <option value="B-6">Enticer</option>
    </optgroup>
    <optgroup label="Cars"> 
        <option value="C-4">Audi TT</option>
        <option value="C-2">Awesome Car</option>
        <option value="C-23">Japanese car</option>
        <option value="C-9">German car</option>
    </optgroup>
</select>

我只想选择第一组的第一个元素(此处为自行车)。请问我该如何在 jQuery 中进行操作?

目前,我尝试了这个:

$('#someSelect option:nth-child(1)').attr("selected", "selected");

但是,问题是,因为有三个第一个元素(--select--Hayabusa奥迪 TT)它选择了所有三个,最终选择了奥迪TT

我尝试对每个做一些事情并只选择第二个,但后来我意识到下拉菜单是动态的,我不想选择默认的(即--select one--),但第一组的第一个元素

我试图模拟一个jsfiddle,但它是搞砸了并且无法工作,不知道为什么:-/
你可以在这里看到

I have dropdown very similar to this:

<select id='someSelect'>
    <option value="0">---select one---</option>
    <optgroup label="Bikes">
        <option value="B-4">Hayabusa</option>
        <option value="B-2">GSXR</option>
        <option value="B-3">Ninja</option>
        <option value="B-6">Enticer</option>
    </optgroup>
    <optgroup label="Cars"> 
        <option value="C-4">Audi TT</option>
        <option value="C-2">Awesome Car</option>
        <option value="C-23">Japanese car</option>
        <option value="C-9">German car</option>
    </optgroup>
</select>

I just want to select the 1st element of 1st group (bikes here). How do I go about it in jQuery please?

Currently, I tried this:

$('#someSelect option:nth-child(1)').attr("selected", "selected");

BUT, the trouble is, since there are three 1st elements ( --select--, Hayabusa and Audi TT) it selects all three, which finaly selects Audi TT

I tried to do some stuff with each and select just the second one, but then I realized that the dropdown is dynamic, I don't want to select the default one (which is --select one--) but the first element of first group

I tried to mock up a jsfiddle, but it's mucked up and not working, not sure why :-/
you can see it here

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

我爱人 2024-12-06 20:15:42

这里是一个示例,这是我使用的选择器:

$("#someSelect optgroup option:first").attr("selected", "selected");

如您所见,我使用了第一个选项通过查看 optgroup 元素内部。

Here is an example and here is the selector I used:

$("#someSelect optgroup option:first").attr("selected", "selected");

As you can see, I used the first option by looking inside the optgroup element.

心在旅行 2024-12-06 20:15:42

嗯,这有效:

http://jsfiddle.net/nYd67/1/

$(function(){
    $('#someSelect optgroup:eq(0) option:eq(0)').attr("selected", "selected");
});

Well this works:

http://jsfiddle.net/nYd67/1/

$(function(){
    $('#someSelect optgroup:eq(0) option:eq(0)').attr("selected", "selected");
});
静若繁花 2024-12-06 20:15:42

从 optgroup 中选择而不是选择:

$('optgroup[label=Bikes] option:first')

或者,如果您不想指定标签,也只需在 optgroup 上进行过滤:

$('optgroup:first option:first')

select from the optgroup instead of the select:

$('optgroup[label=Bikes] option:first')

Or, if you don't want to specify the label, just filter on the optgroup as well:

$('optgroup:first option:first')
风追烟花雨 2024-12-06 20:15:42

只需在选择器中包含 optgroup 即可:

$('#someSelect optgroup:nth-child(2) option:nth-child(1)')

只需记住 :nth-child() 选择器是从 1 开始的,而不是从 0 开始的。另外,在这种情况下,您甚至不需要使用标签名称来限定选择器,因此它也可以是:

$('#someSelect :nth-child(2) :nth-child(1)')

Just include the optgroup in your selector:

$('#someSelect optgroup:nth-child(2) option:nth-child(1)')

Just remember that the :nth-child() selector is 1-based, not 0-based. Also, in this case, you don't even need to qualify the selector with a tag name, so it could also be just:

$('#someSelect :nth-child(2) :nth-child(1)')
烙印 2024-12-06 20:15:42

我总是发现 .eq() 更容易使用。这似乎在你的 jsfiddle 中工作正常。

$('#someSelect option').eq(1).attr("selected", "selected");  

I always find that .eq() is a lot easier to use. This seems to work correctly in your jsfiddle.

$('#someSelect option').eq(1).attr("selected", "selected");  
陈年往事 2024-12-06 20:15:42
$('#someSelect optgroup:first option:first').attr('selected', true);

这有效,我已经在你的 html 上进行了测试

$('#someSelect optgroup:first option:first').attr('selected', true);

this works, I have tested on your html

忆悲凉 2024-12-06 20:15:42

id 为“someSelect”的 select 元素的第一个 optgroup 中第一个 option 的选择器:

"select#someSelect > optgroup:nth-child(1) > option:nth-child(1)"

The selector for the first option in the first optgroup of the select element with an id of "someSelect":

"select#someSelect > optgroup:nth-child(1) > option:nth-child(1)"
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文