现在我从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问题。
我的想法已经不多了,所以如果有人知道这个解决方案的某些语法会很棒!
谢谢!
答案 0 :(得分:1)
您需要选择可能匹配的所有选项,然后使用filter()
功能将它们缩小到实际匹配所需文本的那些选项。这应该这样做:
var ranking = "Silver";
var setIndex = $("#userElo > option").filter(function() {
return $(this).text() === ranking;
}).val();