在主页url之后查找并更改url的一部分



Shopify正在将产品标签中的点切换为URL中几乎所有地方的短划线。除了添加自定义过滤器时,它会用点而不是破折号提取原始标签,这会导致在拾取包含点的标签后进行过滤时出现404。

我想使用JQ在主页url后面的url中查找点并将其切换为短划线。谷歌帮不了什么忙。

所以,假设有一个ul

 <ul>
 <li><a href="http://www.whatever.com/something/tag.with></a></li>
 <ul>

在jq的帮助下,我如何找到"something/tag.wwith"?

p.s。如果有人能给我指一下我是如何把那个点改成破折号的,我会非常感激的。但只要找到它也会有很大帮助。

谢谢!

编辑:

<div class="collection-name">
      <a href="/collections/wool/test.dot" title="Wool"><i class="check-icon"></i> Wool</a>
    </div>

还有这个jquery

$(document).ready(function(){
$("div.collection-name a").each(function(){
  this.href = this.href.replace('yarn/', '');
});
$("div.collection-name a").get(0).pathname.replace('.', '-');
})

我试着添加了另一个this.href=this.href.replace。没用图d href仍然呈现为html://whatever.com等等,所以如上所述使用它。所以,是的。。。这两个都不起作用

首先获取TML所说的值,然后用正则表达式模式调用字符串替换方法

var oldurl=$('ul>li>a').get(0).pathname;var newurl=oldurl.replace(/./i,"-");

更换线也应该像下面一样工作(尽管没有测试)

var newurl=oldurl.replace('.','-');

只需使用常规jQuery选择器来查找所需的标记,对该选择器的结果调用get(0),并从返回的element中获取属性pathname。例如,您在这里提供的HTML只有一个标记,因此选择它非常简单:

$('a').get(0).pathname

显然,在更复杂的文档中,jquery选择器将比$('a')更详细一些。

更改所有文字"."(点)转换为"-"(短划线),只需使用普通JS字符串替换:

$("div.collection-name a").get(0).pathname.replace('.', '-')工作得很好,正如您可以从这个答案中嵌入的示例代码片段中看到的那样;进一步的帮助将需要您解释所提供的内容如何未能满足您的期望。

console.log($("div.collection-name a").get(0))
$("#found").text( $("div.collection-name a").get(0).pathname.replace('.', '-') );
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
    <body>
      <div class="collection-name">
      <a href="/collections/wool/test.dot" title="Wool"><i class="check-icon"></i> Wool</a>
    </div>
      <div>Found the value: <div  id="found"></div></div>
    </body>

最新更新