Перенаправление ссылки Jquery - PullRequest
3 голосов
/ 13 мая 2011

Я пишу сайт asp.net c # webforms

Я пытаюсь написать jquery для достижения следующего:

Когда нажата ссылка ниже

<a title="Relevance" href="www.url.com/search/1/3/5/1/4/0">my link</a>

Я хотел бы иметь jquery, который принимает href и заменяет последнее число в этом случае 0, хотя мы можем изменить 0 для любой заменяемой строки, если это облегчает это. со значением, как только это будет сделано, мы бы хотели перенаправить пользователя на новый URL.

Это легко достижимо в jquery? Может ли кто-нибудь направить меня в направлении учебника, чтобы достичь чего-то похожего на это?

Ответы [ 4 ]

4 голосов
/ 13 мая 2011

Да, вы можете сделать что-то вроде этого (не проверено на точность, но алгоритм должен быть надежным):

$('#myLink').click(function()
{
     var currentUrl = this.href;

     var items = currentUrl.split('/');
     items[items.length - 1] = 'myNewValue';


     window.location.href = items.join('/');
});

Эффективно, разделив косой чертой, затем замените последний элемент, воссоедините строку вместе и установите href окна в новом месте.

2 голосов
/ 13 мая 2011

Если вы можете изменить конечный 0 на любую заменяемую строку, вы также можете изменить его на String.Empty? Таким образом, вместо какого-то поиска и замены вы можете просто добавить значение в URL, что намного проще.

Итак, вы начали бы с:

<a class="search-link" title="Relevance" href="www.url.com/search/1/3/5/1/4/">my link</a>

И вроде как то, что сказал Тейс, но проще:

$('a.search-link').click(function()
{
     var currentUrl = this.href;             
     currentUrl += 'myNewValue';        
     window.location.href = currentUrl;
});
0 голосов
/ 13 мая 2011

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

html:

<a title="Relevance" id="link1" href="http://www.url.com/search/1/3/5/1/4/0">my link</a>

jQuery:

$('#link1').click(function(){

    // get the url
    var url = this.href;

    // get the length of the final slash value
    var finalSlashLength = url.substring(url.lastIndexOf('/') + 1).length;

    // trim the final value off
    var newUrl = url.substring(0, url.length - finalSlashLength);

    // add the new value
    newUrl += 'some new value';

    // redirect to the new URL
    window.location.href = newUrl;     
});

Рабочий образец:

http://jsfiddle.net/QRpYC/2/

РЕДАКТИРОВАТЬ:

Поскольку вы упоминаете в комментариях, разметка генерируется динамически - вы можетелегко найти ссылки на основе других вариантов.Первое, на что я обращаю внимание - они сидят в общем контейнере, таком как div и т. Д.?Найдите родительский элемент с именем, классом или атрибутом ID и используйте его в качестве селектора.

Например, если разметка выглядит следующим образом:

<div id="searchLinks">
    <a title="Relevance" href="http://www.url.com/search/1/3/5/1/4/0">my link</a>
    <a title="SomeLink" href="http://www.url.com/search/1/3/5/1/4/1">my link</a>
</div>

Затем вы можете выбрать их, используя:

$('div#searchLinks > a').click(function(){....});
0 голосов
/ 13 мая 2011

Вы всегда можете сделать это: http://jsfiddle.net/9Kvfh/

$(function()
{
    $('.replaceLastNumber').each(function()
    {
        $(this).click(function(ev)
        {
            ev.preventDefault();

            var ahref = $(this).attr('href');
            var Length = ahref.length;

            if (ahref.slice(Length - 1, Length) == '/') //Remove trailing slash
                ahref = ahref.slice(0, Length - 2);
            else
                ahref = ahref.slice(0, Length - 1);
            ahref += "SomeNewValue";

            window.location.href = ahref;
        });
    });
});

Я чувствую, что это можно было бы сделать лучше другим способом (эта система имеет много точек сбоя: от изменения вашего php-кода до отключения js).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...