2016-09-20 9 views
0

私はjsについてほとんど分かりませんので、優しくしてください。href onclickを複数の変数で変更する

私はもともとクラスを交換するために使用された以下のコードを使用しています。 .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]; 
    }); 
    }); 
}); 

EDIT: ここでは、私が使用しているhtmlです:

<a id="url" href="/0">hello</a> 

私の目標は、/ 1その後/ 2で/ 0を切り替えるというように、それぞれのonclickにすることです。

+0

hrefを変更するには - $(this)).attr()メソッドを使用します – Chetan

+1

idは一意でなければならないため、一度実行した後に停止します。クラスまたは他のセレクターを使用して、各リンクにコードを適用する必要があります。あなたのリンクがすべて同じidなら、それも同様に変更する必要があります。 – gavgrif

+4

スティーブジョブズ!あなたを戻してうれしい!ですから、基本的に要素のクラスを '' className'''から '' href'''''に変更しようとしています。 – kkaosninja

答えて

1

.attr()を使用すると、可変値を-1に設定できます。変数がclasses.lengthに達するまでclickイベントハンドラのインクリメント変数に、演算子を使用せずに変数を0にリセットします。

$(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>

+0

ありがとう、私は本当にこれを学ぶ必要があります。 –

+0

@SteveJobs更新された投稿を参照してください。 – guest271314

1

プロトコルfile://又はhttp://サイレントhref値が加算されるため、これが失敗します。

だからこれを変更:

$.inArray(this.href, classes) 

に:あなたの配列にそれを見て前に文字列からプロトコルを削除

$.inArray(this.href.replace(/^.*?\/\//, ''), classes) 

...。

関連する問題