2013-06-13 29 views
-4

我知道也许你认为这是重复的话题,但没有;我尝试了其他推荐的方式,但它对我不起作用。如何选择带ID的元素包含jQuery中的点符号?

我有这样一个变量:

var $id = "test.1"; 

,如果我尝试使用下面的行,它的工作:

$("#test\\.1") 

,但如果我尝试使用$('#'+'test\\.1'),这是行不通的。

请问您能告诉我为什么以及如何处理它?

更新: 对不起,连续编辑问题的家伙。我会尽量避免下一个问题。

所以,这是我的问题: http://jsfiddle.net/HzfLN/8/

我用:

var id = "text.1".replace(/[.]/gi, "\\\\"); 
$('#'+id).bind("click", function(){ 
    //Do my stuff 
}); 

我试图用4斜杠 “\\” 代替 “\”。所以我修好了。

谢谢你的帮助。

+0

仅供参考这不适用于XHTML,但它是在HTML5中,希望您使用正确的DOCTYPE –

+0

请向我们展示所有代码。 – Hogan

+0

'$('#test \\\\。1“)'不能工作;您的报价不匹配 – Matt

回答

1

使用两个反斜杠逃脱期:

$('#test\\.1'); 

Demo

jQuery docs

使用任何元字符(如” #$%&'()* +,。/:; < =>?@ [] ^`{|}〜)作为文字的一部分ame,它必须用两个反斜杠逃脱:\。例如,id =“foo.bar”的元素可以使用选择器$(“#foo \ .bar”)。

+0

谢谢MrCode。我用你的演示来更新我的代码并显示问题。 – ted

0

作为一种变通方法,您可以使用:

$('[id="test.1"]') 

http://jsfiddle.net/uWKXJ/

+0

感谢您的推荐方式。我有更多的选择,认为^^ – ted

1

你必须在第一个例子不匹配报价。这根本行不通。您需要更改:

$('#test\\.1") 

要:

$('#test\\.1') /* or */ 
$("#test\\.1") 

至于你的其他例子。你目前有什么works fine

$('#test\\.1') 
$('#' + 'test\\.1') 
+0

感谢家伙,一切正常。这是我的代码中的错误,我修正了它。 – ted

相关问题