【发布时间】:2019-09-10 00:23:19
【问题描述】:
我有一堆元素得到三个不同的类: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));
});
});
但这显然行不通。我认为我有三个障碍:
如何正确地将变化的元素绑定到已经定义的函数,有时在它实际定义之前?
如何确保将事件传递给新绑定的函数[我猜这不是通过像在 markX(event) 中那样向函数发送“事件”来完成的]
整个事情看起来是重复的,唯一改变的是警报操作(虽然每个函数的行为不同,但不一定是警报)。有没有更优雅的解决方案?
【问题讨论】:
-
这一行的目的是什么:
$(this).click(markV(event));?似乎这里代码的意图是在第一次用户单击后连续运行状态。 -
你真的想要一个无限循环吗?
-
@pktangyue:没有无限循环
-
@Bergi 是的,我明白他想要什么
标签: javascript jquery jquery-selectors jquery-events