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');
});