2013-10-28 260 views
1

我試圖讓我的頭繞過jQuery,但我很難找出普通數組vs jQuery數組,以及DOM元素vs jQuery元素。jQuery選擇基於其他下拉列表值的下拉值

所以這裏是我嘗試做的一個例子。這個例子真的很簡單,但我需要一些手持:-p,所以我會在我的要求中詳細說明希望答案將是描述性的。

我有兩個<select>下拉菜單,ID爲#version#target

當我點擊一個按鈕,我想在#target選項選擇以下具有相同的名稱作爲最後,但一#version值。 (該項目將存在)

例如:#version有選項:a,b,c,x。 #target有選項a,b,c,d,h,m。

我點擊按鈕。發生的事情是:

  • 讀取的最後一個,但是,一個選項#version:「C」
  • 找到具有相同名稱的選項#target:3號(即指數是2)
  • 集在#target至 「c」 後的一個,即 「d」(第4,索引3)

Here's a fiddle with the example.

對於第一步驟所選擇的值,我想figu紅出來:

var latestVersion = $("#version option").get(-2).text; 

//側面說明:爲什麼.text工作,但不是.val()?哦,.get()返回一個DOM元素
// so如何返回jQuery元素?
// $($("#version option").get(-2)).val()的作品,但長相醜陋

對於第2步,我嘗試這樣做:

var target = $("#target option:contains(latestVersion)"); 

,但它不工作。而且GOT是比手動迭代所有搜索正確值的值更好的方法。

第3步:??。

+0

[這](http://jsfiddle.net/cse_tushar/GpBDY/6/)? –

回答

2

使用第1步,你想通嘗試以下方法:

$('#button').click(function(){  
var latestVersion = $("#version option").get(-2).text; 
//index of LAST-BUT-ONE 
var target=$("#target option[value="+latestVersion+"]").index(); 
//Setting next index value 
$("#target").prop("selectedIndex",target + 1);  
}); 

http://jsfiddle.net/GpBDY/16/

你想
+0

這看起來像迄今爲止最直接的答案+它符合我的所有要求。賣! –

1

.VAL()沒有一個選項元素上工作,但它確實一個選擇的元素上工作:

var v = $("#version").val(); 

讓您在下拉的#Version選擇的元素。

下面的行不會做你想要什麼:

var target = $("#target option:contains(latestVersion)"); 

這是因爲latestVersion作爲值「latestValue」,而不是作爲一個變量的名字對待。要使用變量latestValue的價值,把latestValue像串外:

... contains(" + latestVersion + ")... 

你可能會用在步驟2中的代碼,以獲得下一個選項元素的值組合感興趣的jQuery的方法.next()。請注意,如果沒有下一個元素,則值將爲「未定義」。

1

可以使用nth-child選擇的version值,並使用該設置的target值這種方式做到這一點:

$('#button').click(function(){  
    var latestVersion = $("#version option:nth-child(3)").text(); 
    $("#target").val($('#target option[value="'+latestVersion+'"]').next().text());  
}); 

演示Fiddle

+0

我並不總是想要第一個選擇的第三個元素 - 這些值是動態填充的。我想要第(N-1)個元素。但是,第二選擇的選擇器爲+1。 –

0

我不知道我理解你所尋找的,但我認爲你想要的東西是這樣的:

$('#button').click(function(){ 
    var arrVersion = $("#version option"); 

    var latestVersion = $(arrVersion[arrVersion.length - 2]).val(); 

    $("#target").val(latestVersion); 
    var actualSelected = parseInt($("#target").prop("selectedIndex")); 
    $("#target").prop("selectedIndex", actualSelected + 1); 
}); 

http://jsfiddle.net/GpBDY/9/

相關問題