jquery,添加和删除事件处理程序[重复]

Posted

技术标签:

【中文标题】jquery,添加和删除事件处理程序[重复]【英文标题】:jquery, adding and removing event handlers [duplicate] 【发布时间】:2012-05-10 05:32:49 【问题描述】:

我有 2 个按钮

 $(".button1").on("click", function(event)
 $(".button2").on("click", function(event)

我想做的是从 button1 开始并没有事件侦听器,当 button2 被点击时,事件侦听器被删除并且按钮 1 的事件侦听器被激活。

这是一种相当常见的技术,在 actionscript 3 中使用方法 removeEventListener() 并希望在 jquery 中使用类似的方法或技术。

【问题讨论】:

【参考方案1】:

如果您想删除与jQuery.on 绑定的事件处理程序,那么您可能需要jQuery.off

http://api.jquery.com/off/

【讨论】:

【参考方案2】:

on() 方法绑定事件和off() 解除绑定。如果你给off() 提供参数,它将只取消绑定提供的事件,但没有参数取消绑定所有事件。

    $('.button1').on('click', function() 
        console.log('button1');
        $(this).off('click');
        $('.button2').on('click');
    )
    $('.button2').on('click', function() 
         console.log('button2');
        $(this).off('click');
        $('.button1').on('click');
    )

【讨论】:

【参考方案3】:

这就是我所拥有的,但它不会重新打开事件侦听器

 $(".slide1").on("click", function()
    $(this).addClass('on');
    $('.slide2').removeClass('on');
     $(this).off('click');
    $('.slide2').on('click');
);

$(".slide2").on("click", function()
    $(this).addClass('on');
    $('.slide1').removeClass('on');
    $(this).off('click');
    $('.slide1').on('click');
);

【讨论】:

以上是关于jquery,添加和删除事件处理程序[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何仅删除实例中添加的事件处理程序?

unbind() 移除事件内处理方法

2个事件处理程序调用一个jquery方法[重复]

删除匿名事件处理程序 [重复]

JS删除由库添加的事件侦听器[重复]

R Shiny - 使用jQuery和onclick事件处理程序删除UI