2009-12-20 33 views
1

過濾內容我有以下的下拉菜單:jQuery的選擇和<option>

<select id="target"> 
    <option value="0">Zero ($123.45)</option> 
    <option value="1">One ($99.99)</option> 
    <option value="2">Two ($4.50)</option> 
</select> 

使用jQuery,我怎麼能選擇所選選項的()括號中的內容,即123.4599.994.50

到目前爲止,我有:

$("select#target option:selected").contents(); 

這給了Zero ($123.45)或同等雖然。我如何進一步過濾它以獲取我正在尋找的號碼?

在此先感謝。

+1

使用正則表達式!好極了! – Skilldrick

回答

3

我認爲最地道的方式使用jQuery做,這是

$("#target :selected").text().match(/\((.+)\)/).pop() 

正則表達式通常是匹配Javascript中文本的最佳方式,這種風格的代碼符合通常的jQuery方法chai ning風格,不會引入任何多餘的局部變量,並且不包含醜陋的索引解引用操作。我還以更緊湊的形式編寫了選擇器。

4

嘗試:

var a = $("select#target option:selected").contents(); 
var bracketed = a.replace(/\(([^)]*)\)/g, "$1"); 

或者,如果你不想使用正則表達式:

var a = $("select#target option:selected").contents(); 
var bracketed = a.split('(')[1].split(')')[0]; 
4

你也可以只使用這些美元價值爲每個屬性的值:

<option value="$123.45">Zero ($123.45)</option> 
    etc... 

然後使用這個jQuery來得到它:

var a = $('select#target option:selected').attr('value'); 
+0

我喜歡這個建議。解析文本的作品,但在變化的情況下似乎不那麼靈活(除非用正則表達式來測試變體)。我可能會建議使用一類priceXXXXX-XX並解析它,因爲類可以更具體地定義,並且不會像文本那樣更改。 –