在 2 个函数之间切换

How*_*Gee 4 javascript jquery click toggle

我正在尝试创建一个切换功能,因此当您单击链接时,它会做一件事,而当您再次单击同一链接时,它会做另一件事。我的问题是我使用的是最新版本的 Jquery,似乎 toggle-event 已弃用

在我发现它已被弃用之前,我试图使用它。

$('#edit a').toggle(
     function(){
        editList();
    },
     function(){
        addList();
});
Run Code Online (Sandbox Code Playgroud)

它在文档中说它已经绑定到点击。

Rok*_*jan 6

一个微型 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
Run Code Online (Sandbox Code Playgroud)

摘自我在这里的回答/sf/answers/1506434961/


还有其他方法可以切换状态/值:

现场演示

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
});
Run Code Online (Sandbox Code Playgroud)

%您可以使用
按位异或运算符 代替模运算符,^例如:[c^=1]


使用 Array.reverse()
现场演示

var editAdd = [editList, addList];

function editList(){
   alert('EDIT');
}
function addList(){
   alert('ADD');
}

$('#edit a').click(function(e){  
  e.preventDefault();
  editAdd.reverse()[0]();
});
Run Code Online (Sandbox Code Playgroud)

reverse 将在每次点击时反转我们的数组,我们需要做的就是获取 0 索引值[0]并运行该函数 name [0]()