首页 > 解决方案 > In jQuery, why do I get unrecognized expression error when select option value is less than 1?

问题描述

我正在尝试使用值(getval = 2、1、0.5、0.25)动态填充选择选项。为什么当值小于 1 时出现无法识别的表达式错误:

html:
<option name={{ $papersizeItem['value'] }} >{{ $papersizeItem['title'] }}</option>

jquery:
var getval = 0.5;
$("#s2q14_1 option[name="+getval+"]").prop('selected', true);

Expected output:
<option name=0.5 selected>some name</option>

Error:
Unrecognized expression: #s2q14_1 option[name=0.5]

标签: jquery

解决方案


问题是因为.ingetval值被解释为类选择器。您不能在属性选择器中包含类选择器,因此 Sizzle 引擎会返回该错误。

要解决此问题,请将属性值用引号括起来,以免产生歧义:

$('#s2q14_1 option[name="' + getval + '"]').prop('selected', true);

使用模板文字的替代方法:

$(`#s2q14_1 option[name="${getval}"]`).prop('selected', true);

还值得注意的是,name它不是option元素的有效属性。我建议寻找替代方案,例如data属性。


推荐阅读