这个jQuery .replace 的哪一部分不起作用



我至少读过十个不同的类似主题,但无法弄清楚问题是什么。

我正在尝试更改,将网址的一部分放在我的标题菜单中。那些包含"onepage"的网址应该替换为主题标签。

<ul>
    <li class="menu-item">
        <a class="level2" href="//test.com/products/iphone/iphone-onepage-32gb"><span>iPhone 32GB</span></a>
    </li>
    <li class="menu-item">
      <a class="level2" href="//test.com/products/iphone/iphone-onepage-64gb"><span>iPhone 64GB</span></a>
    </li>
</ul>

$('$('a[href*="onepage"]')').each(function() {
        var text = $(this).text();
        $(this).text(text.replace(new RegExp("onepage","g"), "#");
});

JSFiddle

$('$('a[href *= "onepage"] ')').each(function() {
      var text = $(this).text();
      $(this).text(text.replace(new RegExp("onepage", "g"), "#");
      });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
  <li class="menu-item">
    <a class="level2" href="//test.com/products/iphone/iphone-onepage-32gb"><span>iPhone 32GB</span></a>
  </li>
  <li class="menu-item">
    <a class="level2" href="//test.com/products/iphone/iphone-onepage-64gb"><span>iPhone 64GB</span></a>
  </li>
</ul>

您应该更改 href 而不是文本。另外,您的 css 选择器错误。

$('a[href*="onepage"]').each(function() {
    var href = $(this).prop("href");
    // change the property href to new url
    $(this).prop("href", href.replace(new RegExp("onepage", "g"), "#"));
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
  <li class="menu-item">
    <a class="level2" href="//test.com/products/iphone/iphone-onepage-32gb"><span>iPhone 32GB</span></a>
  </li>
  <li class="menu-item">
    <a class="level2" href="//test.com/products/iphone/iphone-onepage-64gb"><span>iPhone 64GB</span></a>
  </li>
</ul>

您可以使用纯JavaScript来更改href属性,请参阅以下内容:

$('a[href*="onepage"]').each(function() {
  this.href = this.href.replace(/onepage/, "#");
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
    <li class="menu-item">
        <a class="level2" href="//test.com/products/iphone/iphone-onepage-32gb"><span>iPhone 32GB</span></a>
    </li>
    <li class="menu-item">
      <a class="level2" href="//test.com/products/iphone/iphone-onepage-64gb"><span>iPhone 64GB</span></a>
    </li>
</ul>

$('a[href*="onepage"]').each(function() {
        var str = $(this).attr('href').replace(/onepage/, "#");
        $(this).attr('href',str);
});

$('a[href*="onepage"]').attr( "href", function( i, val ) {
  return val.replace(/onepage/, "#");
});

最新更新