无法在jquery选择器中传递点

时间:2015-04-14 10:53:12

标签: javascript jquery

我需要传递带点('。')的字符串作为jquery选择器的一部分。即使在通过添加' \\'来逃避点之后没有一个jquery函数按预期工作。以下是代码:

var id = "www.google.com";
var vgid = id.replace(/\./g, '\\\\.');  //adding '\\' before dot to escape it

var flagged = $('#flagged_'+vgid).val(); // retrieving the value of a field NOT working

上述操作未返回字段的值。但是,如果我使用转义字符对值进行硬编码,则会给出值。

var flagged = $('#flagged_www\\.google\\.com').val(); //this is working

2 个答案:

答案 0 :(得分:5)

您需要在选择器中的每个点之前使用一个斜杠,以便为CSS转义点

在您的硬编码示例中,您需要两个,因为要在JS字符串文字中编写CSS转义字符,您必须转义JS解析器的斜杠字符。

您在生成的示例中放了两个,但应该只有一个。

var vgid = id.replace(/\./g, '\\.'); 

答案 1 :(得分:-1)

从它的外观来看,jQuery需要将值双重转义,这就是你正在做的事情,即。

$(".a\\.b")

仅当您将值作为字符串输入时才适用(因为在执行css查找之前将其转义)。由于您是直接添加值,因此/似乎只需要进行转义,只要意思就是:

var escaped = "www.google.com".replace(/\./g, '\\.');
console.log($('#flagged_'+ escaped).val());

请参阅:http://jsfiddle.net/vjrL3og9/2/