Jquery链接重定向

时间:2011-05-13 14:04:42

标签: c# jquery .net asp.net webforms

我正在写一个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 个答案:

答案 0 :(得分:4)

是的,您可以这样做(不检查准确性,但算法应该是合理的):

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

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


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

有效地,用斜杠分割,然后替换最后一个元素,将字符串重新加入,并将窗口的href设置为新位置。

答案 1 :(得分:2)

如果您可以将尾随0更改为任何可替换字符串,是否也可以将其更改为String.Empty?这样,你可以在URL上添加一个值,而不是某种搜索和替换,这更简单。

所以你要从:

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

有点像Tejs所说的那么简单:

$('a.search-link').click(function()
{
     var currentUrl = this.href;             
     currentUrl += 'myNewValue';        
     window.location.href = currentUrl;
});

答案 2 :(得分:0)

您可以随时执行此操作: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的那些)。

答案 3 :(得分:0)

一个相当简单的方法是找到最终的斜杠,修剪它的值并用你想要的替换它:

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(){....});