2014-06-27 47 views
1

現在,我正在從JQuery獲取select選項的value(文字value屬性),問題在於它只發現第一個值,它只是「包含」該關鍵字。JQuery將「選項:包含」轉換爲精確的字符串值

舉例來說,如果我有一個select有兩種選擇:銀色司(value=1)和銀(value=2),如果我叫下面的代碼行,它將返回(value=1),而不是(value=2

var ranking = "Silver"; // hard-coded for example 
var setIndex = $("#userElo" +" > option:contains(" + ranking + ")").val(); 

問:我一直在嘗試搜索,但沒有成功,例如option:equals,以便它只查找確切的字符串匹配。我已經嘗試過以下各種各樣的測試和猜測。

var setIndex = $("#userElo" + ID + " > option:contains" + ranking).val(); 
var setIndex = $("#userElo" + ID + " > option[text=" + ranking + "]").val(); 
var setIndex = $("#userElo" + ID + " > option[text=" + ranking).val(); 

這裏是一個JSFiddle Demo上顯示銀司和銀色的問題一個簡單的規模。

雖然我沒有想法,所以如果有人知道這個解決方案的一些語法會很棒!

謝謝!

回答

1

您需要選擇所有可能匹配的選項,然後使用filter()函數將它們縮小到實際符合所需文本的選項。這應該這樣做:

var ranking = "Silver"; 
var setIndex = $("#userElo > option").filter(function() { 
    return $(this).text() === ranking; 
}).val(); 
+0

感謝您的迴應!我理解你的意思,但我似乎無法讓我的** [JSFiddle Demo](http://jsfiddle.net/9ppuQ/1/ **)工作。我執行錯了嗎? – Austin

+0

@Austin正如abhitalks所說,這是因爲代碼中沒有ID變量。我沒有看小提琴,我只是假設你的問題中的代碼嘗試使用正確的選擇器。我會編輯我的答案。編輯:這是[更新的小提琴](http://jsfiddle.net/9ppuQ/2/)。 –

+0

啊謝謝!我注意到我忘記在'$(this).text()'上使用'trim()',因爲我的db爲值添加了額外的空格。 – Austin

相關問題