jQuery选择并过滤<option> </option>的内容

时间:2009-12-20 16:05:32

标签: jquery filter css-selectors

我有以下下拉菜单:

<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)或等价物。如何进一步过滤以获得我正在寻找的号码?

提前致谢。

3 个答案:

答案 0 :(得分: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];

答案 1 :(得分:4)

您也可以将这些美元值用作每个的值属性:

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

然后使用这个jQuery来获取它:

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

答案 2 :(得分:3)

我认为使用jQuery执行此操作最常用的方法是

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

正则表达式通常是匹配Javascript中文本的最佳方式,这种代码风格符合通常的jQuery方法链接样式,不会引入任何多余的局部变量,也不包含丑陋的索引解除引用操作。我还以更紧凑的形式编写了选择器。