jQuery链接重定向

Posted

技术标签:

【中文标题】jQuery链接重定向【英文标题】:Jquery link redirect 【发布时间】:2011-08-24 23:39:47 【问题描述】:

我正在写一个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 中很容易实现吗?任何人都可以指出我的教程方向以实现类似的目标吗?

【问题讨论】:

【参考方案1】:

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

$('#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;
);

【讨论】:

这是可能的,并且会让生活变得非常轻松,我猜这个问题就像 javascript 被禁用一样没有默认的想法,我可以在页面加载时默认它。跨度> 如果这对将来的任何人都有帮助,我还发现除了上面的代码之外,我还需要在方法中使用默认操作。【参考方案3】:

您总是可以这样做: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)。

【讨论】:

【参考方案4】:

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

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/

编辑:

由于您在 cmets 中提到标记是动态生成的 - 您可以根据其他选项轻松找到链接。我要寻找的第一件事是它们是否位于一个通用容器中,例如 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()....);

【讨论】:

感谢以上所有帖子。我忘记提及的一件事是链接是动态生成的,因此我无法为它们分配唯一的 id,因此通过 #linkid 引用它们会给我带来问题。我也无法让所有标签都发生这种情况,因为页面上有不需要这样做的项目。我会更好地创建一个简单的 java 脚本函数并使用链接的 onClick 吗?或者是否有类似的方法来使用 jquery,因为我想尝试与使用的脚本语言保持一致 Prib,您可以为这些特殊链接使用 CSS 类吗?看看我的答案,使用“搜索链接”类的示例 我可以,看起来和我想要的完全一样,我现在就给它

以上是关于jQuery链接重定向的主要内容,如果未能解决你的问题,请参考以下文章

页面重定向后的Jquery函数?

jQuery Mobile 301 重定向问题

如何防止超链接点击后重定向?

jquery:更改URL地址而不重定向? [复制]

如何使用 jQuery 或仅使用 Javascript 将按钮重定向到另一个页面

第二页不会重定向到特定链接