如果href包含X,则更改href

时间:2015-04-10 08:05:50

标签: javascript jquery html

我遇到了一个问题,在开始时看起来很琐事。有几个具有“特殊”类的对象,并且每个对象都需要根据参数修改href。 例如,如果网址包含“#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()))})

ifs似乎工作正常,但我不知道为什么这个部分:

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

不是。

1 个答案:

答案 0 :(得分:1)

您可以更好地整理脚本:

$.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 playground