单击jquery/javascript切换
Click toggle with jquery/javascript
我想点击一个表元素,让它在第一次点击时执行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/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++;
});
})();
演示:http://jsfiddle.net/HJwJf/
将切换方法与链接;
$("button").toggle(function(){
$("body").css("background-color","green");},
function(){
$("body").css("background-color","red");},
function(){
$("body").css("background-color","yellow");}
);
您可以在名为"clickCount"的HTML元素上创建一个新的atribute,并将其用作事件处理程序中的计数器。
假设你有一个像这样的按钮:
<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();
}
每次单击该按钮,您都会看到一个包含您所单击次数的警报。
您可以使用相同的方法并将其应用于您的案例。
使用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相比,最好使用适当的事件绑定。
相关文章:
- JavaScript-切换“;全部检查”;复选框true/false
- Rails/Javascript链接到用于切换多个元素的函数
- 在Javascript中切换开/关按钮
- 使用纯javascript的图像切换
- 使Javascript切换可拖动
- 在IE中切换javascript不起作用的复选框
- 两种状态的三向切换(Javascript或jQuery)
- 切换 JavaScript 代码在 IE11 中不起作用
- 使用带有if-else语句的switch来切换JavaScript计算器模式
- 使用HTML输入切换Javascript Else If.检查值并相应地显示结果.成本估算员
- 秒后切换JavaScript OnClick函数
- 切换javascript中的意外标记
- 切换JavaScript中的语句
- 切换JavaScript井字游戏
- 切换javascript语句
- 有一种方法来切换javascript文件
- 切换 JavaScript 函数
- 切换JavaScript不工作
- 延迟图像切换javascript
- 显示/隐藏/切换- Javascript / jQuery