【问题标题】:Jquery link redirectjQuery链接重定向
【发布时间】: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 中很容易实现吗?任何人都可以指出我的教程方向以实现类似的目标吗?

【问题讨论】:

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


    【解决方案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 类吗?看看我的答案,使用“搜索链接”类的示例
      • 我可以,看起来和我想要的完全一样,我现在就给它
      猜你喜欢
      • 1970-01-01
      • 2013-04-03
      • 2017-02-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-07
      • 2015-12-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多