2012-07-26 2 views
-1

У меня есть URL, динамично выход на DIV, которые содержат & так:Как кодировать амперсанд в URL с JQuery

<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> 

Есть ли способ - с помощью JQuery - для каждого экземпляра & быть вместо этого преобразуется в эквивалент сущности HTML, чтобы результат стал таким?

<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> 
+1

Вы знаете, большинство (если не все) современные браузеры автоматически исправить кодировку для вас, пока разборе DOM. –

ответ

2
$('#box a').each(function(){ 
    $(this).attr('href', $(this).attr('href').replace('&','&amp;')); 
    }); 
+0

'this' будет ссылаться на объект' window', если вы не создадите закрытие, например. '.each'. Firebug бросает 'TypeError: $ (this) .attr (« href ») не определено», когда вы вызываете метод replace на [this fiddle] (http://jsfiddle.net/ult_combo/sACYn/1/). Любой современный браузер автоматически исправляет кодировку url при анализе DOM. –

+1

@ FabrícioMatté да, это была серьезная ошибка, спасибо за указание, да, даже я просто положил +1 для другого ответа;) – sabithpocker

+1

+1 за то, что нашли время исправить это. Хороший и чистый ответ. '=]' –

2

This will loop through all the a tags that exist in the document and will replace all the special chars in the href attribute into html entities

$('a').each(function(){ 
    $(this).attr('href',htmlEncode($(this).attr('href'))); 
    console.log($(this).attr('href')); 
}); 


function htmlEncode(value){ 
    return $('<div/>').text(value).html(); 
} 

Working demo


Looping through all the a tags and replacing only the & symbol:

$('a').each(function(){ 
    $(this).attr('href',$(this).attr('href').replace('&','&amp;'); 
    console.log($(this).attr('href')); 
}); 
+0

Я добавлю +1 ваш ответ, поскольку он по крайней мере не сломает javascript на странице ни ссылки. Очень хорошо написано. –