マイクロjQueryプラグイン:
jQuery.fn.clickToggle = function(a,b) {
var ab = [b,a];
return this.on("click", function(){ ab[this._tog^=1].call(this); });
};
// USE LIKE:
$("button").clickToggle(function() {
console.log("AAA");
}, function() {
console.log("BBB");
}); // Chain here other jQuery methods to your selector
ここで私の答えから引用https://stackoverflow.com/a/21520499/383904
状態/値を切り替える他の方法があります:
ライブデモ
var editAdd = [editList, addList], // store your function names into array
c = 0; // toggle counter
function editList(){ // define function
alert('EDIT');
}
function addList(){ // define function
alert('ADD');
}
$('#edit a').click(function(e){
e.preventDefault();
editAdd[c++%2](); // toggle array index and use as function
// % = Modulo operator
});
ここで、モジュロ演算子の代わりに、次のようなビット単位のXOR演算子%
を使用できます。
^
[c^=1]
Array.reverse()LIVEDEMOの
使用
var editAdd = [editList, addList];
function editList(){
alert('EDIT');
}
function addList(){
alert('ADD');
}
$('#edit a').click(function(e){
e.preventDefault();
editAdd.reverse()[0]();
});
reverseは、クリックするたびに配列を反転します。必要なのは、0のインデックス値を取得[0]
し、その関数名を実行することだけです[0]()
。