【发布时间】:2010-03-17 00:29:11
【问题描述】:
.toggle() 方法的 jQuery documentation 声明:
提供 .toggle() 方法是为了方便。手动实现相同的行为相对简单,如果 .toggle() 内置的假设被证明是有限的,这可能是必要的。
.toggle 中的假设已被证明限制了我当前的任务,但文档没有详细说明如何实现相同的行为。我需要将eventData 传递给提供给toggle() 的处理函数,但似乎只有.bind() 会支持这一点,而不是.toggle()。
我的第一个倾向是使用对单个处理函数全局的标志来存储点击状态。换句话说,而不是:
$('a').toggle(function() {
alert('odd number of clicks');
}, function() {
alert('even number of clicks');
});
这样做:
var clicks = true;
$('a').click(function() {
if (clicks) {
alert('odd number of clicks');
clicks = false;
} else {
alert('even number of clicks');
clicks = true;
}
});
我没有测试过后者,但我怀疑它会起作用。这是做这种事情的最好方法,还是我错过了更好的方法?
【问题讨论】:
-
我不明白你的问题。你想做什么?
-
@cletus:我不能使用 .toggle() 因为它似乎不支持将 eventData 传递给处理函数。我正在寻找支持 eventData 的最佳替代解决方案,它(据我所知)将基于 .bind() 方法。换句话说,在 jQuery 文档中说“手动实现相同的行为相对简单”,我正在尝试这样做。
标签: javascript jquery event-handling jquery-events