我需要传递带点('。')的字符串作为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
答案 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());