我有一个ID元素类似于:
的DOM元素something[500]
由我的Ruby on Rails应用程序构建。我需要能够通过jQuery获取这个元素,以便我可以遍历DOM以删除它的父级的父级,它具有我之前无法访问的变量ID。
有谁知道我怎么能这样做?以下代码似乎不起作用:
alert($("#something["+id+"]").parent().parent().attr("id"));
经过进一步检查,以下内容:
$("#something["+id+"]")
返回一个对象,但当我在其上运行“.html()”或“.text()”时,结果总是为null或只是一个空字符串。
非常感谢任何帮助。
答案 0 :(得分:96)
您需要转义方括号,以便它们不被计为属性选择器。试试这个:
alert($("#something\\["+id+"\\]").parent().parent().attr("id"));
See Special Characters In Selectors,特别是第二段:
要使用任何元字符(例如
!"#$%&'()*+,./:;<=>?@[\]^``{|}~
)作为名称的文字部分,必须使用两个反斜杠进行转义:\\
。例如,具有id="foo.bar"
的元素可以使用选择器$("#foo\\.bar")
。 W3C CSS规范包含complete set of rules regarding valid CSS selectors。同样有用的是Mathias Bynens在CSS character escape sequences for identifiers上的博客文章。
答案 1 :(得分:9)
答案 2 :(得分:9)
ID 不能包含方括号。它是forbidden by the spec。
某些浏览器可能会出错并且应对错误,但您应修复数据而不是尝试处理错误数据。
答案 3 :(得分:9)
您也可以
$('[id="something['+id+']"]')
答案 4 :(得分:4)
试试这个:
alert($("#something\\["+id+"\\]").parent()[0].parent()[0].attr("id"));
答案 5 :(得分:3)
你可以使用\\
来逃避它们,或者你可以做这样的事情......
$(document.getElementById("something[" + id + "]"))
答案 6 :(得分:3)
“任何元字符
!"#$%&'()*+,./:;<=>?@[\]^`{|}~
作为名称的文字部分,必须使用两个反斜杠进行转义:\\
。
例如,id =“foo.bar”的元素可以使用选择器
$("#foo\\.bar")
“[source:jquery doc],以及id =”foo [bar]“的元素(即使对W3C无效但由JQuery识别),也可以使用选择器
$("#foo\\[bar\\]")
(就像许多其他人一样,但是所有人都在一起:))