jQuery attr()转义&符号

时间:2011-02-18 17:02:24

标签: javascript jquery dom escaping

所以我试图通过javascript动态设置图像src属性,如下所示:

var url = 'query.php?m=traffic&q=getgraph&id='+pipeId+'&start=-3h';
console.log(url);
$('#3h').attr('src',url);

问题是,它在控制台中显示为query.php?m=traffic&q=getgraph&id=1&start=-3h,#3h图像元素的实际设置src为query.php?m=traffic&q=getgraph&id=1&start=-3h

然后,当然,它不起作用。如何避免jQuery的attr()方法的字符转义?关于如何实现我的目标的任何其他建议也是非常受欢迎的。

5 个答案:

答案 0 :(得分:3)

如果它不起作用,那不是因为&符号被转义。作为HTML元素中的属性,需要转义所有XML实体:

--+-------
< | &lt;
> | &gt;
" | &quot;
& | &amp;

例如,如果我有index.php?foo=bar&buzz=baz,并且我希望该页面有一个a元素目标,我需要像这样设置锚点:

<a href="index.php?foo=bar&amp;buzz=baz

href会被解码为:index.php?foo=bar&buzz=baz

我会看看我是否找不到相关文档。

答案 1 :(得分:2)

我在您的代码中看到的唯一问题是您的ID属性以数字开头,这在HTML4中无效。

$('#3h') // invalid for HTML4

您应该将元素上的ID更改为以h3

开头的字母开头
$('#h3') // valid ID for HTML4

答案 2 :(得分:0)

对我而言,它正在发挥作用:

http://jsfiddle.net/y249K/

答案 3 :(得分:0)

在将数据写入属性之前,您可以escape数据。 试试this fiddle

 $('#3h').attr('src', escape(url));

然后

unescape($('#3h').attr('src'))

答案 4 :(得分:-1)

您可以避免使用jQuery,而是使用原生JavaScript / DOM函数:

document.getElementById('3h').src = url;