-4

我知道也许你认为这是重复的话题,但不是;我尝试了这些其他推荐的方式,但它对我不起作用。

我有一个这样的变量:

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 斜杠“\\”而不是“\”。所以我修好了。

感谢您的所有帮助。

4

3 回答 3

1

第一个示例中的引号不匹配。这根本行不通。你需要改变:

$('#test\\.1")

至:

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

至于你的另一个例子。你目前拥有的工作正常

$('#test\\.1')
$('#' + 'test\\.1')
于 2013-06-13T09:16:07.867 回答
1

使用两个反斜杠来转义句点:

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

演示

来自jQuery 文档

要使用任何元字符(例如 !"#$%&'()*+,./:;<=>?@[]^`{|}~ )作为名称的文字部分,它必须用两个反斜杠转义:\。例​​如,id="foo.bar" 的元素可以使用选择器 $("#foo\.bar")。

于 2013-06-13T09:16:19.037 回答
0

作为一种解决方法,您可以使用:

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

http://jsfiddle.net/uWKXJ/

于 2013-06-13T09:14:22.223 回答