Як вибрати перший елемент у спадному меню за допомогою jquery?


106

Я хочу знати, як вибрати перший варіант у всіх виділених тегах на моїй сторінці за допомогою jquery.

спробував це:

$('select option:nth(0)').attr("selected", "selected"); 

Але не вийшло

Відповіді:


193

Спробуйте це ...

$('select option:first-child').attr("selected", "selected");

Іншим варіантом буде це, але він буде працювати лише для одного випадаючого списку одночасно, як зашифровано нижче:

var myDDL = $('myID');
myDDL[0].selectedIndex = 0;

Погляньте на цю публікацію про те, як встановити значення, цікаве, але не допоможе вам у цьому конкретному питанні:

Змініть вибране значення випадаючого списку за допомогою jQuery


просто змініть myID, щоб вибрати, як я хочу, щоб усі вибрані теги
Amr Elgarhy

26
тепер у jQuery ви можете отримати доступ до властивостей за допомогою .prop()методу. Таким чином, ви можете скористатися $("select").prop("selectedIndex",0);швидким способом вибору першого варіанта для всіх спадових меню.
CBarr

3
Чи знаєте ви, чи це спровокує подію "зміни" у всіх браузерах, лише встановивши атрибут? Начебто в Chrome, але не перевіряли його широко. Я думав над тим, щоб додати ще один $('select').trigger('change');випадок. Дякую!
Брайан Армстронг

3
var myDDL = $('myID')повинен стати хеш у селекторі, щоб статиvar myDDL = $('#myID')
user1069816

1
Цей метод добре працює для мене:$('select option').first().prop('selected',true);
Лоренцо Магон

13

Ваш селектор помиляється, ви, ймовірно, шукали

$('select option:nth-child(1)')

Це також буде працювати:

$('select option:first-child')

3
Індекс селектора CSS-ї дитини починається з 1, а не з 0
Сергій

10

Ана альтернативне рішення для RSolgberg, яке розпалює 'onchange'подію, якщо вона присутня:

$("#target").val($("#target option:first").val());

Як зробити перший параметр <select>, вибраний за допомогою jQuery?


1
Це працює краще, ніж прийнята відповідь, якщо вам доведеться кілька разів змінити вибраний варіант. Наприклад, якщо ви фільтруєте свої параметри та показуєте їх частину.
Гійом Ренульт


4

Те, що ви хочете, мабуть:

$("select option:first-child")

Що це за код

attr("selected", "selected");

робить встановлення атрибута "selected" на "selected"

Якщо ви хочете, щоб вибрані параметри, незалежно від того, це перша дитина, вибір:

$("select").children("[selected]")

1
Замінити attrз , propякщо ви використовуєте JQuery 1.6+
JESAN Fafon

2

Я відповідаю, тому що попередні відповіді перестали працювати з останньою версією jQuery. Я не знаю, коли він перестав працювати, але в документації сказано, що .prop () був кращим методом отримання / встановлення властивостей з часу jQuery 1.6.

Ось так я змусив його працювати (з jQuery 3.2.1):

$('select option:nth-child(1)').prop("selected", true);

Я використовую knockoutjs, і прив'язки змін не спрацьовували за вказаним вище кодом, тому я додав .change () до кінця.

Ось що мені було потрібно для мого рішення:

$('select option:nth-child(1)').prop("selected", true).change();

Див. Примітки .prop () в документації тут: http://api.jquery.com/prop/


2

Ось просте javascriptрішення, яке працює в більшості випадків:

document.getElementById("selectId").selectedIndex = "0";

1

якщо ви хочете перевірити текст вибраного варіанта незалежно від того, чи є його першою дитиною.

var a = $("#select_id option:selected").text();
alert(a); //check if the value is correct.
if(a == "value") {-- execute code --}

Врятував мене другий пошук. Це майже те, що я шукав, хоча мене більше цікавило зміна значення, ніж перевірка. $('#myID option:selected').text('NEW STRING');
Рікі Пейн

1
    var arr_select_val=[];

    $("select").each(function() { 
        var name=this.name;
            arr_select_val[name]=$('select option:first-child').val();
    });


// Process the array object
     $('.orders_status_summary_div').print(arr_select_val);
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.