我有一堆元素得到三个不同的类neutral
:markedV
和markedX
。当用户单击这些元素之一时,类会切换一次:中性 -> 标记V -> 标记X -> 中性。每次点击都会切换类并执行一个功能。
$(document).ready(function(){
$(".neutral").click(function markV(event) {
alert("Good!");
$(this).addClass("markedV").removeClass("neutral");
$(this).unbind("click");
$(this).click(markX(event));
});
$(".markedV").click(function markX(event) {
alert("Bad!");
$(this).addClass("markedX").removeClass("markedV");
$(this).unbind("click");
$(this).click(neutral(event));
});
$(".markedX").click(function neutral(event) {
alert("Ok!");
$(this).addClass("neutral").removeClass("markedX");
$(this).unbind("click");
$(this).click(markV(event));
});
});
但显然这行不通。我认为我有三个障碍:
如何正确地将更改的元素绑定到已经定义的函数,有时在它实际定义之前?
如何确保将事件传递给新绑定的函数
整个事情看起来是重复的,唯一改变的是警报动作(虽然每个函数的行为不同,不一定是警报)。有没有更优雅的解决方案?