【问题标题】:Return href minus string返回href减去字符串
【发布时间】:2014-01-16 05:00:33
【问题描述】:

现在我得到了这段脚本,它将 ?category 添加到元素中的所有链接。问题是我有一个评论按钮,它返回一个像“http://example.com/post2#respond”这样的网址,这意味着我的脚本将返回“http://example.com/post2#respond?category”。这是一个问题,因为我正在使用 PHP 进行该查询,并且 # 后面的所有内容都不会被服务器解析。

这是代码:

<script type="text/javascript">
jQuery(function ($) {
    $(".comments-link a").attr("href", function(i, href) {  return href + "?category";   });
});

我想做类似的事情

return href.replace(/#respond/gi") + "?category" + "#respond"

所以它最终会是http://example.com/post2?category#respond

编辑:我设法用 href.replace 删除了“respond”,但没有删除主题标签

【问题讨论】:

  • 您可能想了解url.js
  • 谢谢。我想避免使用像这样简单的外部库。

标签: jquery string hash replace


【解决方案1】:

href.replace 有效。只是弄乱了语法。

$(".comments-link a").attr("href", function(i, href) {  return href.replace(/#respond/gi, '') + "?category" + "#respond" ;   });

【讨论】:

    【解决方案2】:

    Demo JS Fiddle Diddle


    $(document).ready(function () {
        $('.comments-link a').attr('href', function (i, href) {
            return href.substring(0, href.indexOf('?category'));
        });
    });
    

    【讨论】:

      【解决方案3】:

      一个链接有一些属性(主机名、协议、路径名等),等于location-object,基于这些属性构建href,例如:

      $(".comments-link a")
        .attr("href", function() {  return [this.protocol,
                                            '//',
                                            this.hostname,
                                            '/',
                                            this.pathname,
                                            '?category'].join('') ;   });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-07-05
        • 2018-10-05
        相关资源
        最近更新 更多