Каков правильный селектор jquery, чтобы получить все раскрывающиеся списки select с определенным именем класса?

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


EDIT: Я, должно быть, делаю что-то неправильно, так как большинство принятых ответов не работают, поэтому я думаю, что в моем коде должна быть какая-то причуда. Я вставил как 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>

etc . . .

код jquery:

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

    });

5 ответов


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

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

демо


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

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


дайте этому выстрел:

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

вам нужно использовать .className селектор, как это:

$('select.className')

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


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

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