Javascript 使用jQuery向继承的事件添加更多代码

Javascript 使用jQuery向继承的事件添加更多代码,javascript,jquery,scroll,Javascript,Jquery,Scroll,我有一个继承的jQuery代码,其中设置了scroll事件: $(window).on('scroll', function(event) { // Whatever }); 现在,我需要在触发单击事件时向以前的代码中添加更多功能,但在单击另一个元素时必须删除此新代码,类似于下面的代码: $('#element1').on('click', function(){ $(window).on('scroll', function(event) { // Add m

我有一个继承的
jQuery
代码,其中设置了
scroll
事件:

$(window).on('scroll', function(event) {
    // Whatever
});
现在,我需要在触发单击事件时向以前的代码中添加更多功能,但在单击另一个元素时必须删除此新代码,类似于下面的代码:

$('#element1').on('click', function(){
    $(window).on('scroll', function(event) {
        // Add my code to the inherited one
    });
});


$('#element2').on('click', function(){
    $(window).on('scroll', function(event) {
        // Unbind my code and leave the original behaviour
    });
});
但是,我无法重写继承的代码。有没有办法做到这一点


非常感谢您将所有代码放入函数中,并根据需要使用标志执行

   var additionalCode = false;

   function usefulCode(event) {
       // here is your default code

       if (additionalCode) {
         // here is additional code
       }
    }

    $(window).on('scroll', usefulCode);

    $('#element1').on('click', function(){
        additionalCode = true;
    });

    $('#element2').on('click', function(){
        additionalCode = false;
    });
您可以使用来绑定事件。然后,您可以使用来删除使用命名空间的事件处理程序


使用上述方法,默认的
scroll
事件处理程序不会产生任何影响。

您可以将它绑定到特定于主体的类,而不是将
scroll
事件绑定到
body
。单击按钮将交换类

$(文档).ready(函数(){
$('.btn')。单击(函数(){
$(“.body”)
.removeClass($(this).data('passive-class'))
.addClass($(this).data('active-class'));
});
});
.origin{
颜色:红色;
}
.习俗{
颜色:蓝色;
}

一些内容
卷轴原点
滚动自定义

尝试
$(窗口).off('scroll')
@RayonDabre,如果我这样做,继承的代码将不再工作,这就是我想要避免的。当我单击一个元素时,我想将我自己的代码添加到旧元素中,当我单击第二个元素时,我想只保留旧代码,尝试在“someMethod()”之类的方法中使用,并尝试更改函数对另一个元素的引用function@Genzotto,在
$('#element2')
上,您必须
关闭侦听器!这个
$('#element1')。在('click',function(){$(window)。在('scroll',function(event){
将为堆栈上的滚动事件放置任意数量的侦听器,每次单击一个!您需要通过某种方式控制添加的侦听器不超过一个。它不会在第一次执行函数时绑定两个事件吗?它是同一个事件。结果取决于额外的代码变量。我稍微更改了代码。太感谢您了h、 这就是我要找的
$('#element1').on('click', function(){
    $(window).off('scroll.element').on('scroll.element', function(event) {
        // Add my code to the inherited one
    });
});

$('#element2').on('click', function(){
    $(window).off('scroll.element');
});