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>