如果href包含X,请更改href

If href contains X, change href

本文关键字:href 包含 如果      更新时间:2023-09-26

我遇到了一个问题,一开始似乎很麻烦。有几个类为"special"的对象,每个对象都需要根据参数修改href。例如,如果url包含"#1",则应将其更改为"#HERE"。请参阅此处的示例:jsfiddle

<a class="o-btn special" href="https://www.example.com/site#1">open</a><br>
<a class="o-btn special" href="https://www.example.com/site#2">open</a><br>
<a class="o-btn special" href="https://www.example.com/site#3">open</a><br>
<a class="o-btn special" href="https://www.example.com/site#4">open</a><br>
<a class="o-btn special" href="https://www.example.com/site#12">open</a><br>
if ( $(".special").attr("href").indexOf('#1')>-1 )
                $(function(){$(".special").attr("href","https://www.example.com/site#HERE?".concat(URI(window.location.href).query()))}
else if ( $(".special").attr("href").indexOf('#2')>-1 )
                $(function(){$(".special").attr("href","https://www.example.com/site#2?".concat(URI(window.location.href).query()))}
else if ( $(".special").attr("href").indexOf('#3')>-1 )
                $(function(){$(".special").attr("href","https://www.example.com/site#3?".concat(URI(window.location.href).query()))}
else if ( $(".special").attr("href").indexOf('#4')>-1 )
                $(function(){$(".special").attr("href","https://www.example.com/site#4?".concat(URI(window.location.href).query()))}
else if ( $(".special").attr("href").indexOf('#5')>-1 )
                $(function(){$(".special").attr("href","https://www.example.com/site#5?".concat(URI(window.location.href).query()))}
else if ( $(".special").attr("href").indexOf('#6')>-1 )
                $(function(){$(".special").attr("href","https://www.example.com/site#6?".concat(URI(window.location.href).query()))}
else $(function()
                $(function(){$(".special").attr("href","https://www.example.com/site?".concat(URI(window.location.href).query()))})

如果似乎是正确的工作,但我不知道为什么部分:

$(function(){ 
     $(".special").attr("href", "https://www.example.com/site#3?".concat(URI(window.location.href).query()))
}

不是。

您可以更好地组织脚本:

$.fn.extend({
	fixLink: function () {
		return this.each(function (i) {
			var thisLink = $(this);
			var thisHref = thisLink.attr("href");
			var splited = thisHref.split('#');
			if (splited.length > 1) {
				var hash = splited.pop();
				switch( hash ) {
					case '1':
						thisHref = thisHref.replace('#1', '#HERE');
						break;
					case '12':
						thisHref = thisHref.replace('#12', '#SOMEWHERE');
						break;
					default:
						break;
				};
				thisHref += '?url=' + encodeURIComponent(window.location.href);
				thisLink.attr('href', thisHref);
			};
		})
	}
});
$('.special').fixLink();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<a class="o-btn special" href="https://www.example.com/site#1">open</a>
<br>
<a class="o-btn special" href="https://www.example.com/site#2">open</a>
<br>
<a class="o-btn special" href="https://www.example.com/site#3">open</a>
<br>
<a class="o-btn special" href="https://www.example.com/site#4">open</a>
<br>
<a class="o-btn special" href="https://www.example.com/site#12">open</a>
<br>

Fiddle游乐场