如何使用实时切换事件?

我有以下代码

$(".reply").toggle ( function () { x1(); }, function () { x2(); } ); 

我需要使用live ,所以新元素也会被绑定。 有一些语法可以做到吗? 或者我是否需要在click事件上实现toggle

我正在使用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(); } }); 

此外,请记住,由于事件委托的工作方式, live的选择器必须尽可能具体。 每次点击文档时,jQuery都必须爬上树检查元素是否与选择器匹配。 .delegate()同样的原因, .delegate()性能要高得多,因为你可以限制捕获区域。

live支持jquery 1.4中的自定义事件。 你可以尝试这样的事情:

 $(function () { $(".reply").live("customToggle", function () { $(this).toggle( function () { x1(); }, function () { x2(); } ); }); $(".reply").live('click', function () { $(this).trigger('customToggle'); }); }); 

没有自定义事件,这似乎工作正常:

 $(".reply").live('click', function () { $(this).toggle( function () { x1(); }, function () { x2(); } ); $(this).trigger('click'); });