1

在我的程序中,我有一个 jquery 行

$( '#monsters[0]').animate( { left: "+=25" },500);

我有一个名为 monsters 的数组,但我不明白为什么会有所不同,当我将 id 更改为不同的图像 id 时,此代码确实有效,而我把('img')它甚至适用于具有 id 的图像monsters[0]我也确定这是图像 ID。但是我运行上面的代码并且图像没有任何反应,控制台中也没有出现错误,任何人都可以解释一下吗?

链接在这里,如果这有帮助的话。

4

3 回答 3

5

字符[]在选择器中具有特殊含义(它们表示属性选择器)。如果您想将它们用作 ID 选择器(或任何其他类型的选择器)的一部分,您必须使用\.

请注意,由于您将选择器表示为字符串文字,因此您也必须转义转义序列。

'#monsters\\[0\\]'
于 2013-09-01T13:24:04.253 回答
2

'#monsters[0]'jQuery 无法将其解析为意味着元素具有 id "monsters[0]"。它被解析为对具有 idmonsters和属性的元素的查询0

你可以做

$(document.getElementById('monsters[0]')).animate( { left: "+=25" },500);

如果您多次使用它,您可以自己构建一个小实用程序:

function $$(id) { return $(document.getElementById(id)) }

所以你只需要做

$$('monsters[0]').animate( { left: "+=25" },500);

但是您可能应该避免使用这些 id,例如它们会在 CSS 中给您带来同样的问题。在这里,类或数据属性看起来更有意义。


评论 :

当然还有另一种动态转义[and]字符的解决方案(以及稍后可能出现的其他问题)。不要这样做:这使代码更加复杂,隐藏了它仅适用于某些形式的 id 的事实,并且更重:您构建一个 jQuery 将解析以了解您需要 id 的字符串,然后 jQuery 将打电话document.getElementById。直接使用document.getElementById更清晰、更可靠、更高效。

于 2013-09-01T13:22:06.870 回答
-4

$( '#monsters').animate( { left: "+=25" },500);

会做。

$( '#monsters')放弃一个 jQuery 包装的对象。

于 2013-09-01T13:24:30.230 回答