我有以下代码

$(".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() 的性能要高得多,因为您可以限制捕获区域。

10-07 21:56