【问题标题】:Update all href attributes更新所有 href 属性
【发布时间】:2016-08-30 22:07:21
【问题描述】:

我有一个名为a (var a = "test") 的变量,我需要将它放在包含单词ONE 的页面上所有a 元素的所有href 属性中。所有href 值都不相同,但始终包含单词ONE

例如我想改变这个:

href="/page2.php?how=GO-ONE-24-title-stay"

到这里:

href="/page2.php?how=GO-ONE-test-24-title-stay"

【问题讨论】:

  • 那么问题是什么?
  • 问题是我怎样才能找到所有href包含这个词并将这个变量放在那里:)
  • 您想将 word 'test' 放入 URL 中,还是将 'test' 变量的 value 放入 URL 中?您的第二个示例不清楚,因为它与您上面所说的相冲突。
  • 对不起,这有点令人困惑......我将变量命名为与值相同 - var test="test" - 所以我将重命名 var testvar a
  • 现在清楚了吗?

标签: jquery html string find href


【解决方案1】:

你可以这样做:

$(document).ready(function(){
  var a ="test" ;

    $('a').each(function(){
        this.href = this.href.replace('ONE', 'ONE-'+a);
    });
});

这是一个有效的example

【讨论】:

    【解决方案2】:

    这样的?

    $('a[href*="ONE"]').each(function(){
        $(this).attr('href', $(this).attr('href').replace('ONE', 'ONE-test'));
    });
    

    你的例子有点误导,所以如果你的意思是测试值是一个变量,那么你需要这样的东西:

    var add = 'test';
    
    $('a[href*="ONE"]').each(function(){
        var currentHref = $(this).attr('href');
        $(this).attr('href', currentHref.replace('ONE', 'ONE-' + add));
    });
    

    【讨论】:

    • 我要补充一点,您可以将选择器更改为$('a[href*="ONE"]')
    【解决方案3】:

    您可以通过为attr() 方法提供一个函数来实现此目的;不需要显式循环。试试这个:

    var a = 'test';
    $('a[href*="-ONE-"]').attr('href', function(i, href) {
        return href.replace('-ONE-', '-ONE-' + a + '-';
    });
    

    请注意,初始 jQuery 选择器将要修改的元素限制为仅在 href 属性中包含 ONE- 的元素。

    【讨论】:

    • 如果她需要对她的href全部进行此更改,那么在执行时间上进行替换有什么意义?使用支持 RegExp 替换的编辑器,她可以找到 href="([^\"]+)ONE([^\"]+)" 并替换为 href="$1ONE-test$2"。她不是吗?
    • 您是否建议您使用 RegEx 解析 HTML?因为那是一个非常糟糕的主意。
    • 不,我不是在暗示这个。我的意思是,如果我理解这个问题,看起来她想更改所有href 以指向某种测试环境,那么为什么要在执行时用 jQuery 进行替换呢?她可以在她的编辑器中找到并替换她的href。她只需要和编辑器支持正则表达式替换(如 Sublime Text)......或者我只是没有得到她的需求...... :)
    • @JordiNebot 啊,我明白了。在那种情况下,我完全同意。我只能假设 OP 有一个可以在运行时更改的变量,需要放在属性中
    【解决方案4】:

    试试这个..

    $(document).ready(function(){
    var test = "test";
    $("a").each(function() {
      var href_val = $(this).prop("href");
      if(href_val.indexOf("ONE") >= 0){
      href_val = href_val.replace("ONE", "ONE-"+test);
      $(this).prop("href", href_val);
      }
    });
    });
    

    【讨论】:

      猜你喜欢
      • 2019-06-13
      • 1970-01-01
      • 2014-07-21
      • 1970-01-01
      • 2015-09-17
      • 2018-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多