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

发布于 2024-11-05 00:14:07 字数 514 浏览 0 评论 0原文

我有以下带有不寻常 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

我怎样才能选择这个字段?我以前从未见过这种特殊的语法,但它显然适用于提交。

谢谢!

贾里德

I have the following select with an unusual ID/Name attribute:

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

This doesn't appear to allow me to select it with:

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

http://jsfiddle.net/stzPQ/

uncaught exception: Syntax error, unrecognized expression: 1

How can I select this field? I've never even seen this particular syntax before, but it apparently works on submit.

Thanks!

Jared

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(8

从来不烧饼 2024-11-12 00:14:07

使用 \\ 转义 :

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();

Escape the : by using \\

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

Updated jsfiddle

Or you can use document.getElementById("customfield_10021:1") as the context for your selector.

var s = document.getElementById("customfield_10021:1");
unit2 = $('option:selected', s).text();
渔村楼浪 2024-11-12 00:14:07

你应该转义冒号,所以这样做:

$("#customfield_10021\\:1")

你会:

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

那是因为冒号是一个特殊的字符,需要用反斜杠转义。
希望这有帮助。干杯

You should escape the colon, so do this:

$("#customfield_10021\\:1")

You'd have:

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

That's because the colon is a special caracter, and needs to be escaped with backslash.
Hope this helps. Cheers

浅暮の光 2024-11-12 00:14:07

转义冒号:

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

请参阅 jQuery 常见问题解答


您可能只想使用 .val()< 而不是使用 option:selected /code>获取

unit = $('#customfield_10021\\:1').val();

Escape the colon:

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

See the jQuery FAQ.


Instead of using option:selected you might want to just use .val() to get the value of the <select>:

unit = $('#customfield_10021\\:1').val();
谈下烟灰 2024-11-12 00:14:07

试试这个:

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

: 通常用于伪选择器,并且反斜杠需要在字符串文字中加倍。

为避免疑义,冒号字符是合法的 在 ID 和 Name 属性中。

Try this:

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

The : is normally used for pseudo selectors, and the backslash needs to be doubled up in the string literal.

For the avoidance of doubt, the colon character is legal in ID and Name attributes.

森林散布 2024-11-12 00:14:07

这有效:

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

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

This works:

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

Live demo: http://jsfiddle.net/stzPQ/2/

傲娇萝莉攻 2024-11-12 00:14:07

我认为这有效:

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

I think that works:

unit = $("#customfield_10021\\:1 option:selected").text();
风向决定发型 2024-11-12 00:14:07

请记住,冒号用于分隔伪类,就像使用 option:selected 一样,您必须从元素的 id 中删除冒号:

<select name="customfield_10021_1" id="customfield_10021_1" class="select cascadingselect-child">

这是因为 jQuery 正在尝试使用 < code>#customfield_10021:1 as id = customfield_10021 ,其伪类 1 不存在,因此出现错误。

Remember that a colon is used to deliminate a pseudo class, just as you do with option:selected you will have to remove the colon from the id of your element:

<select name="customfield_10021_1" id="customfield_10021_1" class="select cascadingselect-child">

This is because jQuery is trying to use #customfield_10021:1 as id = customfield_10021 with a pseudo class of 1 which doesn't exist, thus the error.

哆啦不做梦 2024-11-12 00:14:07

JSF 中的另一个解决方案是防止表单名称添加到每个 id 前面。

这可以通过表单标签中的 prependId="false" 来完成:

            <h:form id="gestion_clefs" prependId="false">

Another solution in JSF is to prevent the form name from prepending each id.

This can be done with the prependId="false" in the form tag :

            <h:form id="gestion_clefs" prependId="false">
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文