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