如何在href,img属性等中包含变量时如何转义字符。这似乎不起作用:
var myData = JSON.parse(jsonString2);
var $grouplist = $('#groups');
$.each(myData, function() {
$('<li><a href="'+ this.url + '"/><img src="'+ this.src + '" class="image0"/></a></li>').appendTo($grouplist);
});
}
以上整个功能。
$('<li><a href=\"' + this.url + '\"</a></li>').appendTo($grouplist);
答案 0 :(得分:4)
你不需要。创建元素并设置属性,然后您不必担心转义任何内容,既不引用引号,也不需要属性值:
$('<li>').append($('<a>', { href: this.url })).appendTo($grouplist);
带有图像元素的代码:
$('<li>').append(
$('<a>', { href: this.url }).append(
$('<img>', { src: this.src, 'class': 'image0' })
)
).appendTo($grouplist);
答案 1 :(得分:0)
只有在具有相同引号时才需要转义。在你的情况下,这将工作:
$('<li><a href="' + this.url + '"</a></li>').appendTo($grouplist);
因为双引号不会干扰单引号。
答案 2 :(得分:0)
您不需要转义双引号,因为它们在单引号内。此外,您没有完成打开标签。
答案 3 :(得分:0)
结帐window.escape。还有encodeURIComponent,如果是用户输入,通常是首选。
正如其他人指出的那样,你不需要在那里逃避双引号。所以试试这个:
$('<li><a href="' + encodeURIComponent(this.url) + '"></a></li>').appendTo($grouplist);
或Guffa的方法:
$('<li>').append($('<a>', { href: encodeURIComponent(this.url) })).appendTo($grouplist);