JQuery转换"选项:包含"到一个确切的字符串值

时间:2014-06-27 13:07:14

标签: javascript jquery

现在我从JQuery获得select选项的value(文字value属性),问题是它找到的第一个值只是“包含”该关键字

例如,如果我有select有两个选项:Silver Division(value=1)和Silver(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 ,显示了Silver Division和Silver问题。

我的想法已经不多了,所以如果有人知道这个解决方案的某些语法会很棒!

谢谢!

1 个答案:

答案 0 :(得分:1)

您需要选择可能匹配的所有选项,然后使用filter()功能将它们缩小到实际匹配所需文本的那些选项。这应该这样做:

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