用于选择的jQuery选择器ID:1

时间:2011-05-05 14:59:29

标签: jquery jquery-selectors

我有以下选择,其中包含一个不寻常的ID / Name属性:

<select name="customfield_10021:1" id="customfield_10021:1" class="select cascadingselect-child">

这似乎不允许我选择:

unit = $('#customfield_10021:1 option:selected').text();

http://jsfiddle.net/stzPQ/

uncaught exception: Syntax error, unrecognized expression: 1

如何选择此字段?我以前从未见过这种特殊的语法,但它显然适用于提交。

谢谢!

贾里德

8 个答案:

答案 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)

这有效:

$('[id="customfield_10021:1"] option:selected').text()

现场演示: http://jsfiddle.net/stzPQ/2/

答案 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">