Создание ссылки, чтобы перейти куда-то еще, чем по умолчанию href - PullRequest
1 голос
/ 29 декабря 2011

Я хочу получить текст ссылки, добавить его к URL-адресу и открыть новый URL-адрес с добавленной строкой запроса Onclick of Original Link. Как получить текст ссылки с использованием javascript или jquery?

<a href="www.mysite.com/search.aspx?kwd=" onClick="location.href='http://mysite.com/search.aspx?kwd='+ Grab text 'kangaroo' and append here as QueryString>Kangaroo</a>

Ответы [ 5 ]

2 голосов
/ 29 декабря 2011
$('.your-url').click(function(event) {
    event.preventDefault();
    window.location= $(this).attr('href') + encodeURIComponent($(this).text());
});

Я заметил, что ни один из других ответов не кодировал текст в ссылке как параметр строки запроса.

Inline (как ваш пример) будет выглядеть так:

<a href="www.mysite.com/search.aspx?kwd=" onClick="location.href = this.href + encodeURIComponent($.trim($(this).text()))">Kangaroo</a>

return false не требуется, поскольку после изменения объекта location сценарии объектов перестают работать, а страница изменяется.

UPDATE

Вы можете использовать $.trim() для:

Удалите пробелы из начала и конца строки.

Источник: http://api.jquery.com/jquery.trim/

2 голосов
/ 29 декабря 2011

Вы можете получить доступ к текущей привязке через this. Текст может быть затем через this.innerHTML.

Как то так ...

<a href="www.mysite.com/search.aspx?kwd=" onClick="location.href='http://mysite.com/search.aspx?kwd='+ this.innerHTML; return false;">Kangaroo</a>
0 голосов
/ 29 декабря 2011
$('a.your-url').click(function(e) {
  e.preventDefault();
  url = $(this).attr('href') + $(this).text();
  location.href = url;

});
0 голосов
/ 29 декабря 2011

Пример jQuery:

$('a.link').click(function () {
    var $this = $(this),
        href = $this.attr('href');

    window.location = href + encodeURIComponent($this.text());
    event.preventDefault();
    return false;
});

Демо

0 голосов
/ 29 декабря 2011

Чтобы отправить страницу на ссылку href + text при нажатии, это должно работать:

$("a").click(function(){
     location.href = $(this).attr("href") + $(this).text();
     return false;
});

Но почему бы просто не установить правильные hrefs при загрузке страницы и полностью избавиться от всех этих обработчиков onclick?

$("a").each(function(i, el) {
     var $el = $(el);
     $el.attr("href", $el.attr("href") + encodeURI($el.text()));
});
...