使用多个变量更改href onclick

时间:2016-09-20 05:09:04

标签: javascript jquery

我对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。

2 个答案:

答案 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)

...在数组中查找之前从字符串中删除协议。