Javascript 为什么jquery不起作用?
在我的程序中,我有一个jquery行Javascript 为什么jquery不起作用?,javascript,jquery,Javascript,Jquery,在我的程序中,我有一个jquery行 $( '#monsters[0]').animate( { left: "+=25" },500); 我有一个名为monsters的数组,但我不明白为什么会有不同,当我将id更改为不同的图像id时,此代码确实有效,我将('img')放在id为monsters的图像上[0]我也确定这是图像id。但是我运行了上述代码,图像没有任何变化,控制台中也没有出现错误,有人能解释一下吗 ,如果这有帮助的话。“#monsters[0]”不能被jQuery解析为表示元素具有
$( '#monsters[0]').animate( { left: "+=25" },500);
我有一个名为monsters的数组,但我不明白为什么会有不同,当我将id更改为不同的图像id时,此代码确实有效,我将('img')
放在id为monsters的图像上[0]我也确定这是图像id。但是我运行了上述代码,图像没有任何变化,控制台中也没有出现错误,有人能解释一下吗
,如果这有帮助的话。“#monsters[0]”
不能被jQuery解析为表示元素具有id“monsters[0]”
。它被解析为具有as idmonsters
和属性0
的元素的查询
你可以
$(document.getElementById('monsters[0]')).animate( { left: "+=25" },500);
如果您多次使用它,您可以为自己构建一个小型实用程序:
function $$(id) { return $(document.getElementById(id)) }
所以你只需要
$$('monsters[0]').animate( { left: "+=25" },500);
但您可能应该避免使用这些id,例如,它们会在CSS中给您带来相同的问题。在这里,类或数据属性看起来更有意义
评论:
当然还有另一种动态转义
[
和]
字符(以及以后可能出现的其他字符)的解决方案。不要这样做:这使得代码更加复杂,隐藏了它只对特定形式的id有效的事实,而且更重:您构建了一个字符串,jQuery将解析该字符串以了解您需要该id,然后jQuery将调用document.getElementById
。直接使用document.getElementById
更清晰、更可靠、更高效。字符[
和]
在选择器中具有特殊意义(它们指示)。如果要将它们用作ID选择器(或任何其他类型的选择器)的一部分,则必须使用\
对其进行转义
请注意,由于要将选择器表示为字符串文字,因此也必须转义转义序列
'#monsters\\[0\\]'
$(“#怪物”)。制作动画({左:+=25},500)代码>
行
$(“#怪物”)
给出了一个jQuery包装的对象。@tryingtogetprogramming我详细解释了我的解释。现在清楚了吗?@正在尝试,因为jQuery使用了角括号,就像在CSS中定义的那样。作为条件,例如,a[href^='https://']
(其href以https://
开头的所有链接)。首先,您确实不应该有ID为monsters[0]
的元素。例如,使用怪物。@Tomalak-你似乎混淆了方括号和角括号。“条件”在这里不是一个很好的术语,选择器中的所有内容都是条件,它们是属性选择器。为什么他一开始就不应该有这样的身份证呢?我没有把方括号和尖括号搞混。我本可以说“谓词”,但那只是“条件”的另一个词。为什么你不应该有这样的身份证?因为它会干扰您使用的系统。例如,这使得编写CSS和jQuery变得更加困难。由于在不适当的地方使用了编程符号,它使代码变得杂乱无章,并使代码更难理解。一个ID应该是一个字符串,出于实用性和敏感性的考虑,它不应该看起来像一段代码。@dystroy第三个变体应该是$(“*[ID='monsters[0]']”)
,它也可以不转义地工作。无论如何,OP已经证实了我的怀疑,ID包含尖括号,因为他在某个点上评估了它们。这验证了我的观点——这是错误的,而且OP一开始不应该使用这样的东西。可能是非常有用但事实上我需要的document.getElementById('monsters[0])
(dystroy的回答)因为我在动态地做这件事,这只是一个例子,但真的很感谢you@tryingToGetProgrammingStraight-没有任何东西可以阻止您向字符串动态添加\
字符,因此您不需要避免使用选择器语法。您实际上是在尝试document.getElementById('monsters[0]”后立即使用的
我意识到我必须动态添加转义。你能让我的生活更轻松吗?请告诉我如何添加这些转义或给我一个解释链接?@tryingtogetprogrammingdirect-原始答案中有一个例子。一旦它们成为字符串的一部分,就可以像对待任何其他字符一样对待它们。