我有以下代码
$(".reply").toggle
(
function ()
{
x1();
},
function ()
{
x2();
}
);
我需要使用
live
,因此也会绑定(bind)新元素。是否有一些语法可以做到这一点?或者我需要在 toggle
事件上实现 click
吗?我正在使用 jQuery 1.4.2。
最佳答案
刚刚修改了 fehay 的答案,以便它不依赖 jQuery 在 toggle()
期间不附加重复的事件处理程序
$(".reply").live('click', function () {
var toggled = $(this).data('toggled');
$(this).data('toggled', !toggled);
if (!toggled) {
x1();
}
else {
x2();
}
});
此外,请记住,由于事件委托(delegate)的工作方式,
live
的选择器必须尽可能具体。每次单击文档时,jQuery 都必须爬上树检查元素是否与选择器匹配。出于同样的原因,.delegate()
的性能要高得多,因为您可以限制捕获区域。