如何使用实时切换事件?
我有以下代码
$(".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'); });