点击使用jQuery / JavaScript的切换(Click toggle with jquer

2019-07-19 21:52发布

我想点击一个表元素,把它做X中的第一次点击,如果点击再次进行该Y

<td class='p' id='e1' onclick="myFunction2()"><img src='person2.png'/></td>

那是什么我有我的HTML代码中点击刚才,但我想改变这种状况,这样的项目可以选择,那么如果再次点击了取消它将然后触发不同的功能。

Answer 1:

我会假设你要调用的函数每次点击都交替 (你没有说):

$('#e1').on('click', function() {

    // retrieve current state, initially undefined
    var state = $(this).data('state');  

    // toggle the state - first click will make this "true"
    state = !state; 

    // do your stuff
    if (state) {
        // do this (1st click, 3rd click, etc)
    } else {
        // do that
    }

    // put the state back
    $(this).data('state', state);  
});

这将使用jQuery的.data功能按钮的点击状态存储在按钮元素本身。

或者,你可以使用一个外部变量,但你应该在一个封闭封闭的回调(在这种情况下, 立即调用的函数表达式 )以防止变量成为一个全局变量:

(function() {
    var state;

    $('#e1').on('click', function() {
        state = !state; 
        if (state) {
            // do this (1st click, 3rd click, etc)
        } else {
            // do that
        }
    });
})();

如果.on呼叫和state变量声明是一个jQuery内document.ready处理程序,将有同样的效果。



Answer 2:

演示: http://jsfiddle.net/HJwJf/

连结切换方法用;

 $("button").toggle(function(){
    $("body").css("background-color","green");},
    function(){
    $("body").css("background-color","red");},
    function(){
    $("body").css("background-color","yellow");}
  );


Answer 3:

你可以创建一个名为HTML元素上一个新的属性附加伤害,例如,“的clickCount”,并用它你的事件处理程序内的计数器。

比方说,你有这样一个按钮:

<button data-click-count='0' onclick="myFunction(this)">My Button</button>

你有这样的功能:

function myFunction(elt) {
   // Gets the clicks count
   var count = $(elt).data("click-count");

   // Adds one to the click counter
   $(elt).data("click-count", ++count);  

   if (count == 1)
      doSomething();
   else if (count == 2)
      doSomethingElse();
}

单击该按钮每一次,你会看到一个警报,您所做的点击数。

您可以使用同样的方法,它适用于你的情况。



Answer 4:

非常基本的,让我知道,如果这是接近你想要什么。

http://jsfiddle.net/WNJ75/6/

<div id="e1">Click Me</div>

(function() {
    var click_track = 1;

        $("#e1").click(function() {
            if (click_track == 1)
              alert("do something");
            else if (click_track == 2) {
               alert("do something else and reset click");
               click_track = 0;
            }

            click_track++;
        });
})();


Answer 5:

使用state变量。 的state变量将值之间交换01上的每个点击。 利用的state ,我们可以执行相应的功能fn阵列。

<td class='p' id='e1'><img src='person2.png'/></td>

$("td#e1.p").each(function(){
  var state = 1, fn = [myFunction1, myFunction2];
  $(this).click(function(){
    return fn[state = 1 - state].apply(this, arguments);
  });
});

此外,它最好用合适的事件不是嵌入的JavaScript绑定。



文章来源: Click toggle with jquery/javascript