jquery - 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]
解决方案
问题是因为.
ingetval
值被解释为类选择器。您不能在属性选择器中包含类选择器,因此 Sizzle 引擎会返回该错误。
要解决此问题,请将属性值用引号括起来,以免产生歧义:
$('#s2q14_1 option[name="' + getval + '"]').prop('selected', true);
使用模板文字的替代方法:
$(`#s2q14_1 option[name="${getval}"]`).prop('selected', true);
还值得注意的是,name
它不是option
元素的有效属性。我建议寻找替代方案,例如data
属性。