我想点击一个表元素,把它做X中的第一次点击,如果点击再次进行该Y
<td class='p' id='e1' onclick="myFunction2()"><img src='person2.png'/></td>
那是什么我有我的HTML代码中点击刚才,但我想改变这种状况,这样的项目可以选择,那么如果再次点击了取消它将然后触发不同的功能。
我想点击一个表元素,把它做X中的第一次点击,如果点击再次进行该Y
<td class='p' id='e1' onclick="myFunction2()"><img src='person2.png'/></td>
那是什么我有我的HTML代码中点击刚才,但我想改变这种状况,这样的项目可以选择,那么如果再次点击了取消它将然后触发不同的功能。
我会假设你要调用的函数每次点击都交替 (你没有说):
$('#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
处理程序,将有同样的效果。
演示: http://jsfiddle.net/HJwJf/
连结切换方法用;
$("button").toggle(function(){
$("body").css("background-color","green");},
function(){
$("body").css("background-color","red");},
function(){
$("body").css("background-color","yellow");}
);
你可以创建一个名为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();
}
单击该按钮每一次,你会看到一个警报,您所做的点击数。
您可以使用同样的方法,它适用于你的情况。
非常基本的,让我知道,如果这是接近你想要什么。
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++;
});
})();
使用state
变量。 的state
变量将值之间交换0
和1
上的每个点击。 利用的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绑定。