我对js知之甚少,所以请保持温和。
我正在使用以下用于交换类的代码。我认为这就像将.className
更改为.href
一样简单,但我错了。
我的问题是它有效,然后停止。
$(document).ready(function(){
$('#click').click(function () {
$('#url').each(function(){
var classes = ['/1','/2','/3','/4'];
this.href = classes[($.inArray(this.href, classes)+1)%classes.length];
});
});
});
修改 这是我正在使用的HTML:
<a id="url" href="/0">hello</a>
我的目标是使用/ 1然后/ 2切换/ 0,依此类推每次onclick。
答案 0 :(得分:1)
您可以使用.attr()
,将变量设置为-1
。在click
事件处理程序增量变量,直到变量达到classes.length
,然后将变量重置为0
,而不使用Remainder
运算符。
$(document).ready(function() {
var classes = ['/1','/2','/3','/4'];
var i = -1;
var url = $("#url");
$('#click').click(function () {
i = (++i < classes.length) ? i : 0;
url.attr("href", classes[i]);
console.log(url.attr("href"));
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js">
</script>
<button id="click">click</button>
<a id="url" href="/0">hello</a>
答案 1 :(得分:1)
此操作失败,因为协议file://
或http://
以静默方式添加href
值。
所以改变这个:
$.inArray(this.href, classes)
为:
$.inArray(this.href.replace(/^.*?\/\//, ''), classes)
...在数组中查找之前从字符串中删除协议。