如何使用jQuery对URL中的符号和进行编码

如何使用jQuery对URL中的符号和进行编码,jquery,html,urlencode,ampersand,Jquery,Html,Urlencode,Ampersand,我将一些URL动态输出到一个div中,其中包含一个&,如下所示: <div id="box"> <a href="http://domain.com/index.html&location=1">First URL</a> <a href="http://domain.com/index.html&location=2">Second URL</a> </div> 这将遍历文档中存在的所有

我将一些URL动态输出到一个div中,其中包含一个
&
,如下所示:

<div id="box">
    <a href="http://domain.com/index.html&location=1">First URL</a> 
    <a href="http://domain.com/index.html&location=2">Second URL</a>
</div>
这将遍历文档中存在的所有
a
标记,并将
href
属性中的所有特殊字符替换为html实体

这将遍历文档中存在的所有
a
标记,并将
href
属性中的所有特殊字符替换为html实体


您知道,大多数(如果不是所有)现代浏览器在解析DOM时会自动为您修复编码。您知道,大多数(如果不是所有)现代浏览器在解析DOM时会自动为您修复编码。
将引用
窗口
对象,除非您使用例如
每个
创建一个闭包。Firebug正在抛出一个
类型错误:$(this).attr(“href”)是未定义的
,当您在上调用replace方法时。不过,任何现代浏览器在解析DOM时都会自动修复url编码。@Fabriciomatté是的,这是一个严重的错误,谢谢你指出,是的,即使我只是将+1作为另一个答案;)+感谢你花时间来解决这个问题。回答也很清楚
=]
将引用
窗口
对象,除非您使用例如
每个
创建闭包。Firebug正在抛出一个
类型错误:$(this).attr(“href”)是未定义的
,当您在上调用replace方法时。不过,任何现代浏览器在解析DOM时都会自动修复url编码。@Fabriciomatté是的,这是一个严重的错误,谢谢你指出,是的,即使我只是将+1作为另一个答案;)+感谢你花时间来解决这个问题。回答也很清楚
=]
我将+1您的答案,因为它至少不会破坏页面中的javascript和链接。写得也很好。我将+1你的答案,因为它至少不会破坏页面中的javascript,也不会破坏链接。写得也很好。
<div id="box">
    <a href="http://domain.com/index.html&amp;location=1">First URL</a> 
    <a href="http://domain.com/index.html&amp;location=2">Second URL</a>
</div>
$('#box a').each(function(){
  $(this).attr('href', $(this).attr('href').replace('&','&amp;'));
  });
$('a').each(function(){
    $(this).attr('href',htmlEncode($(this).attr('href')));
    console.log($(this).attr('href'));
});


function htmlEncode(value){
  return $('<div/>').text(value).html();
}
$('a').each(function(){
    $(this).attr('href',$(this).attr('href').replace('&','&amp;');
    console.log($(this).attr('href'));
});