2014-09-04 67 views
-1

我有元素像这样...如何在jQuery中选择类[数组]?

<input type="text" name="name-lang[en]" id="name-lang[en]"> Name in English 
<input type="text" name="name-lang[fr]" id="name-lang[fr]"> Name in France 

我的jQuery是...

$('#name-lang[en]').hide(); 

这是不行的。
而这也不行。

$('#name-lang\[en\]').hide(); 

这些是HTML元素5.

+1

为什么你不给他们上课? – kefy 2014-09-04 16:17:57

+2

该ID无效:http://stackoverflow.com/questions/70579/what-are-valid-values-for-the-id-attribute-in-html – 2014-09-04 16:18:19

+1

@MatteoTassinari:从你的链接问题:*“HTML 5甚至更宽容,只是说一个id必须包含至少一个字符并且可能不包含任何空格字符。“* – 2014-09-04 16:20:36

回答

3

由于\是在字符串中使用转义字符,'#name-lang\[en\]'相当于'#name-lang[en]'

> console.log('#name-lang\[en\]'); 
#name-lang[en] 

你必须逃离\还有:

$('#name-lang\\[en\\]') 
$('input[id="name-lang[en]"]') 
$('input[name="name-lang[en]"]') 

这在jQuery documentation很好的解释:

要使用任何如果你不想逃脱字符,你可以用带引号的值中使用的属性选择元字符(例如!"#$%&'()*+,./:;<=>[email protected][\]^`{|}~)作为名称的文字部分,必须使用两个反斜杠进行转义:\\。例如,具有id="foo.bar"的元素可以使用选择器$("#foo\\.bar")

+0

我使用的ID是无效的,但谢谢你,你的答案工作正常。 – vee 2014-09-04 16:24:31

+0

@vee:它在HTML4中无效,但在HTML5中无效。 – 2014-09-04 16:24:56

+1

我记得几年前写过这个文档,当时我们遇到了由CMS生成的ID,并且在我们的控制之外,IIRC。 *嗅探*记忆。 – ajm 2014-09-04 16:27:40

0

这将工作

$('input[name=name-lang\\[en\\]]') 

但无论如何,这是错误的做法:1)有元素的ID是完全一样的NAME属性; 2)使用额外的[] ID无特殊需要