我有以下选择,其中包含一个不寻常的ID / Name属性:
<select name="customfield_10021:1" id="customfield_10021:1" class="select cascadingselect-child">
这似乎不允许我选择:
unit = $('#customfield_10021:1 option:selected').text();
uncaught exception: Syntax error, unrecognized expression: 1
如何选择此字段?我以前从未见过这种特殊的语法,但它显然适用于提交。
谢谢!
贾里德
答案 0 :(得分:8)
使用:
\\
unit2 = $('#customfield_10021\\:1 option:selected').text();
<强> Updated jsfiddle 强>
或者您可以使用document.getElementById("customfield_10021:1")
作为选择器的上下文。
var s = document.getElementById("customfield_10021:1");
unit2 = $('option:selected', s).text();
答案 1 :(得分:4)
你应该逃避冒号,所以这样做:
$("#customfield_10021\\:1")
你有:
unit = $('#customfield_10021\\:1 option:selected').text();
那是因为冒号是一个特殊的角色,需要用反斜杠进行转义。 希望这可以帮助。干杯
答案 2 :(得分:4)
逃离冒号:
unit = $('#customfield_10021\\:1 option:selected').text();
请参阅jQuery FAQ。
您可能只想使用.val()
来获取option:selected
的值,而不是使用<select>
:
unit = $('#customfield_10021\\:1').val();
答案 3 :(得分:2)
试试这个:
unit = $('#customfield_10021\\:1 option:selected').text();
:
通常用于伪选择器,反斜杠需要在字符串文字中加倍。
为避免疑义,ID和Name属性中的冒号字符is legal。
答案 4 :(得分:1)
答案 5 :(得分:1)
我认为有效:
unit = $("#customfield_10021\\:1 option:selected").text();
答案 6 :(得分:0)
请记住,使用冒号来区分伪类,就像使用option:selected
一样,您必须从元素的id中删除冒号:
<select name="customfield_10021_1" id="customfield_10021_1" class="select cascadingselect-child">
这是因为jQuery尝试使用#customfield_10021:1
作为id = customfield_10021
,伪类1
不存在,因此错误。
答案 7 :(得分:0)
JSF中的另一个解决方案是防止表单名称在每个id之前添加。
可以使用表单标记中的prependId =“false”来完成此操作:
<h:form id="gestion_clefs" prependId="false">