什么是正确的jquery选择器来获取具有特定类名的所有选择下拉列表?

时间:2010-01-14 14:13:42

标签: jquery select drop-down-menu selector

我想循环浏览具有某个类名的所有下拉选项,并向其中添加一个项目,我正在努力使用正确的选择器


编辑:我一定是做错了,因为大多数受欢迎的答案似乎都没有用,所以我觉得我的代码中肯定会有一些怪癖。我已粘贴下面的HTML和jquery代码。如果这是有道理的,请告诉我。


HTML:

<select onfocus="this.enteredText='';" onkeydown="return handleKey();" onkeyup="event.cancelbubble=true;return false;" onkeypress = "return selectItem();"  class="componentSelect"  id="components0" name="applicationUpdater.dependencies[0].componentName" >
<option value= 5 >Client</option>
<option value= 79 >Server</option>
</select>

 <select onfocus="this.enteredText='';" onkeydown="return handleKey();" onkeyup="event.cancelbubble=true;return false;" onkeypress = "return selectItem();"  class="componentSelect"  id="components1" name="applicationUpdater.dependencies[0].componentName" >
<option value= 5 >Client</option>
<option value= 79 >Server</option>
</select>
等等。 。

jquery代码:

    $('select.componentSelect').each(function() {
        var select = $(this);
        $(select).children('option').each(function() {
            if ($(this).text() == currentComponentName) {
                $(this).remove();
            }
        });

    });

5 个答案:

答案 0 :(得分:12)

您应该使用.class selector

// select every <select> element with classname "yourclassname"
$('select.yourclassname').each(function() {
    // $(this) now refers to one specific <select> element
    // we append an option to it, like you asked for
    $(this).append(
        $('<option value="foo">Bar</option>');
    );
});

有关如何使用jQuery正确选择元素的更多信息,请查看http://docs.jquery.com/Selectors

答案 1 :(得分:6)

要回答您的新问题,您可以使用以下行删除包含<option>的所有currentComponentName

$('select.componentSelect option:contains("' + currentComponentName + '")').remove();

Demo

答案 2 :(得分:2)

试一试:

$('select.className').each(function() {
   var currentSelect = $(this);
   // ... do your thing ;-)
});

答案 3 :(得分:1)

您需要使用.className选择器,如下所示:

$('select.className')

此选择器将element选择器(匹配所有<select>元素)与className选择器(匹配包含className类的所有元素)组合在一起,以查找所有<select>元素那个班。

答案 4 :(得分:1)

只要我将currentComponentName定义为您选择的选项之一,您发布的jQuery代码就适合我。 Aron Rotteveel的回答非常接近,但附加部分有点偏,试试这个:

$('select.componentSelect').each(function() { 
    $(this).append('<option value="foo">Bar</option>'); 
});