2010-11-19 68 views
24

我有以下的HTML如何使用jQuery選擇的第n個選項

<select onchange="this.form.submit()" name="name"> 
    <option value="9995101E01#17201044055PM">9995101E01#17201044055PM</option> 
    <option value="GRR-Example">GRR-Example</option> 
    <option value="admin">admin</option> 
    <option value="123w">123w</option> 
</select> 

我可以知道我可以使用jQuery的選擇與價值「管理員」?

回答

71
$('select[name=name] option:eq(2)').attr('selected', 'selected'); 

Demo

9

像這樣:

$("select[name='name'] option:eq(2)").attr("selected", "selected"); 

編輯:

做你想做的事,你的新的編輯,也就是選擇擁有的admin值的選項:

$("select[name='name'] option:contains('admin')").attr("selected", "selected"); 

See it working

+0

我該如何傳遞一個變量呢?我嘗試實現$('#id'選項:eq(variable_name)「)。attr(」selected「,」selected「); – Naveen 2012-12-06 22:40:58

+0

在選擇列表中調用val()將自動選擇具有該值的選項。 因此,這應該工作: $(「select [name ='name']」)。val('admin'); – Jordan 2013-05-16 20:38:10

+0

我意識到通過使用這種方法「onchange」沒有被觸發,任何人都知道一種方式要實現這一點? – 2014-11-06 14:08:21

5

我覺得nth-child僞類是你在找什麼:

$('select option:nth-child(3)').attr('selected', 'selected'); 
2

我不勸告使用.attr('selected', 'selected')設定的選擇值。 這是不好的做法。如果兩個選項具有「選擇」屬性 - 那麼select的值是多少?

這裏是簡單和容易的版本,將工作:

$('select[name="name"]').val('admin'); 

DEMO

0

如果你想選擇第n個選項觸發onchange事件,則:

function selectOption(nr) { 
    var select = $("select"); 
    if (select.children().length >= nr) { 
     let value = select.find('option:eq(' + nr + ')').val(); 
     select.val(value).change(); 
    } 
} 
0

剛如果它有助於某人更新。我有類似的要求,但在我的情況下,下拉列表存儲爲JavaScript變量。我也喜歡Denis Matafonov建議選擇有問題的選項。所以這是最後一塊代碼:

var target_dd = $('select[name=name]'); 
$(target_dd).val($(target_dd).find('option:eq(2)').html());