我知道也许你认为这是重复的话题,但不是;我尝试了这些其他推荐方式,但它对我不起作用。
我有一个这样的变量:
var $id = "test.1";
如果我尝试使用以下行,它就可以了:
$("#test\\.1")
但如果我尝试使用$('#'+'test\\.1')
,则无效。
你能告诉我为什么以及如何处理它?</ p>
更新: 对不起,有人继续编辑这个问题。我将尽力避免接下来的问题。
所以,这是我的问题: http://jsfiddle.net/HzfLN/8/
我用过:
var id = "text.1".replace(/[.]/gi, "\\\\");
$('#'+id).bind("click", function(){
//Do my stuff
});
我尝试使用4斜杠“\\”而不是“\”。所以我修好了。
感谢您的帮助。
答案 0 :(得分:1)
第一个示例中的引号不匹配。这根本行不通。你需要改变:
$('#test\\.1")
要:
$('#test\\.1') /* or */
$("#test\\.1")
至于你的另一个例子。您目前拥有的works fine。
$('#test\\.1')
$('#' + 'test\\.1')
答案 1 :(得分:1)
使用两个反斜杠来逃避这段时间:
$('#test\\.1');
来自jQuery docs:
使用任何元字符(例如!“#$%&amp;'()* +,。/:;&lt; =&gt;?@ [] ^`{|}〜)作为文字作为名称的一部分,必须使用两个反斜杠进行转义:\。例如,id =“foo.bar”的元素可以使用选择器$(“#foo \ .bar”)。
答案 2 :(得分:0)