jQuery / Javascript заменяет <space>в ссылочной ссылке на% 20 - PullRequest
9 голосов
/ 12 мая 2009

Я новичок в jQuery, и я пытаюсь написать код для просмотра страницы и переписать атрибут href якорных ссылок, чтобы пробелы были удалены и заменены на% 20.

пока у меня есть:

$(".row a").each(function(){
  $(this).attr("href").replace(/\s/g,"%20");
});

Я попробовал несколько вариантов без удачи.

Ответы [ 6 ]

20 голосов
/ 12 мая 2009

Вам лучше использовать встроенную функцию javascript encodeURI.

$(".row a").each(function(){
  $(this).attr( 'href', encodeURI( $(this).attr("href") ) );
});
20 голосов
/ 12 мая 2009

Ваш подход верен, но вы забываете установить новое значение после его замены. Попробуйте это:

$(".row a").each( function() {
   this.href = this.href.replace(/\s/g,"%20");
});
3 голосов
/ 12 мая 2009

Вы должны установить значение атрибута (attr(key, value)), в вашем коде вы только читаете его значение:

$(".row a").each(function(){
  $(this).attr('href', $(this).attr("href").replace(/\s/g,"%20"));
});
1 голос
/ 09 июля 2010

@ Naresh Да, есть способ для этого, см. Пример ниже:

Декодировать URI после его кодирования:


<script type="text/javascript">

var uri="my test.asp?name=ståle&car=saab";
document.write(encodeURI(uri)+ "<br />");
document.write(decodeURI(uri));

</script>  

Вывод кода выше будет:


my%20test.asp?name=st%C3%A5le&car=saab
my test.asp?name=ståle&car=saab

для более подробной информации посетите здесь

0 голосов
/ 15 июня 2011

Я знаю, что это супер поздно, но я обнаружил, что метод unescape() тоже работает ...

0 голосов
/ 01 июля 2010

Вы можете заменить "" следующим образом:

$(document).ready(function () {
    $("#content a").each(function (){
        $(this).attr('href', $(this).attr("href").replace("%20",""));
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...