0

抱歉,我在发帖之前确实寻找过答案。但我找不到我要找的东西。

我正在尝试使用 jQuery UI 的 tag-it 小部件。我正在尝试将该.tagit()方法应用于元素,如下所示:

jQuery("#myTags:.5aedf589").tagit();

我试图应用该tagit()方法的页面上的实际元素是这样的:

<ul id="myTags:.5aedf589">

这应该是一个合法的 id 名称,但以防万一我也试过了,只是遇到"#myTags"了同样的问题。

我使用 jQuery 而不是 $ 别名,因为我的脚本同时包含 Prototype 和 jQuery。首先加载 jQuery,从文档中它说我应该能够使用 jQuery 而不是$甚至不使用noConflict(). 我也尝试过使用 noConflict,但没有帮助。

问题是上面的 jQuery 表达式会导致以下 JavaScript 错误:

Syntax error, unrecognized expression: "#myTags:.5aedf589"
4

3 回答 3

2

:并且.在查询中有特殊含义,句号是类选择器,冒号是伪选择器。如果您想将它们用于其他用途,则必须使用 转义它们\,并转义\JS 字符串;因此,在它们之前插入\\http://docs.jquery.com/Frequently_Asked_Questions#How_do_I_select_an_element_by_an_ID_that_has_characters_used_in_CSS_notation.3F

jQuery("#myTags\\:\\.5aedf589").tagit();
于 2012-09-25T04:09:24.333 回答
0

你为什么不试试这个选择器,看看它是否有效

jQuery("[id*=5aedf589]").tagit();

它将选择具有 5aedf589 的 id 并选择该选择器。这只是为了检查选择器是否是实际问题。

如果您遇到多个选择器可能匹配 escape 的问题 与\

于 2012-09-25T04:09:16.657 回答
0

错误是由于元素的 id。是的,它是 HTML 元素的有效 id,但对于使用基于类的选择器的 jquery ':' 指的是伪选择器和 '.' 请参阅类,这就是它抛出无法识别的表达式错误的原因。对于伪选择器,您不要在伪选择器之前使用类

要么你像@Juan Mendes 说的那样逃避它。或者改变元素的id。

于 2012-09-25T06:00:08.077 回答