Каков правильный селектор jquery, чтобы получить все выпадающие списки с определенным именем класса? - PullRequest
9 голосов
/ 14 января 2010

Я хочу перебрать все выпадающие списки с определенным именем класса и добавить элемент к нему, и я просто борюсь с правильным селектором


РЕДАКТИРОВАТЬ: Я, должно быть, делаю что-то не так, потому что большинство из принятых ответов, полученных с помощью голосования, похоже, не работают, поэтому я думаю, что в моем коде должна быть какая-то странность Я вставил 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>

и т. Д. , .

Код запроса:

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

    });

Ответы [ 5 ]

12 голосов
/ 14 января 2010

Вы должны использовать селектор .class .

// 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.

7 голосов
/ 14 января 2010

Чтобы ответить на ваш новый вопрос, вы можете использовать следующую строку, чтобы удалить все <option> с currentComponentName:

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

Демо

2 голосов
/ 14 января 2010

Дайте этому шанс:

$('select.className').each(function() {
   var currentSelect = $(this);
   // ... do your thing ;-)
});
1 голос
/ 14 января 2010

Ваш опубликованный код jQuery работает для меня, пока я определяю currentComponentName как один из вариантов на ваш выбор. Ответ Арона Роттвила очень близок, но в части добавления немного нет, попробуйте это:

$('select.componentSelect').each(function() { 
    $(this).append('<option value="foo">Bar</option>'); 
}); 
1 голос
/ 14 января 2010

Вам необходимо использовать селектор .className, например:

$('select.className')

Этот селектор объединяет селектор element (соответствует всем <select> элементам) с селектором className (соответствующим всем элементам, содержащим класс className), чтобы найти все элементы <select> с этим классом.

...