我正在使用jQuery 1.7.1,而没有其他JS库/框架。我可以选择大多数元素,除了一个给我带来麻烦的特定表格。这在Firefox和Chrome中都会发生。
这是描述一切的图像:
此图片中的步骤依次为:
为什么jQuery不会把桌子交给我?为什么会发生这种情况?
答案 0 :(得分:3)
它不起作用,因为#
是ID的jQuery选择器中的特殊字符,因此您收到此错误:Syntax error, unrecognized expression: #office_set-###
如果您真的必须在ID中使用###
(由于Matt发布的原因我不建议使用它),您可以在选择中将其转义为:
$('#office_set-\\#\\#\\#')
示例 - http://jsfiddle.net/infernalbadger/fpcME/
您必须双重转义,因为您确实希望将\
传递给jQuery选择器引擎。
答案 1 :(得分:2)
“#”在DOM ID中没有正式有效:http://www.w3.org/TR/REC-xml/#NT-Name,因此您无法获得一致的支持。
答案 2 :(得分:2)
你不应该在你的id,类标记名,属性和值中使用任何这些元字符:!"#$%&'()*+,./:;<=>?@[\]^{|}~
(也是反引号:`,但我不能把它放在代码块中^^)。
如果你必须使用这些字符,你可以使用两个反斜杠在选择器中转义它们
$('#office_set-\\#\\#\\#')
顺便说一下,当这些字符用作javscript代码时,你的问题是非常相关的,例如在onclick属性中。只有在正确转义元字符时才会找到包含特定代码的元素(其中会有很多元素)。
答案 3 :(得分:0)
1)确保步骤5中表格的选择器是正确的。也许有多个元素具有相同的id。
2)当您将JQuery元素分配给变量时,您无法像这样调用原始DOM属性。尝试:
theTableIWant.attr('id');
或者:
var theTable = $(theTableIWant).get(0);
theTable.id;
答案 4 :(得分:0)
您需要引用ID中的#个字符,因为该字符是jQuery的特殊字符。
$('#office_set-\\#\\#\\#');
它是双反斜杠,因此JavaScript将它们转换为jQuery然后看到的单个反斜杠。