Javascript jQuery-如何调用方法/原型函数

Javascript jQuery-如何调用方法/原型函数,javascript,jquery,sidebar,Javascript,Jquery,Sidebar,我使用sticky侧边栏使侧边栏粘住:我还使用AJAX多次重新加载页面。过了一段时间,滚动延迟了,我想这是因为每次我重新加载内容时都没有破坏stickysidebar 在这里如何调用destroy函数 我试过了 $('.stickem').stickySidebar.destroy() 及 $('.stickem').stickySidebar(“销毁”) 但两者都不起作用。以下是原型: $.stickySidebar.prototype={ init:function(){ }, 粘性:函数(

我使用sticky侧边栏使侧边栏粘住:我还使用AJAX多次重新加载页面。过了一段时间,滚动延迟了,我想这是因为每次我重新加载内容时都没有破坏stickysidebar

在这里如何调用destroy函数

我试过了

$('.stickem').stickySidebar.destroy()

$('.stickem').stickySidebar(“销毁”)

但两者都不起作用。以下是原型:

$.stickySidebar.prototype={

init:function(){

},

粘性:函数(){

},

bind:function(){}

销毁:函数(){
警报(“h”); this.element.unbind(“已销毁”,this.teardown); this.teardown();
},

拆卸:函数(){ console.log('eee'); $.removeData(this.element[0],this.name); this.element.removeClass(this.name); 这个。解除绑定(); this.element=null;
},

解除绑定:函数(){}

}


这不是jQuery插件的工作方式。如果您想将其命名为
$('.stickem').stickySidebar(“销毁”)(这是推荐的方法),请执行以下操作:

$.fn.stickySidebar = function(action) {
    if (action === 'destroy') {
        ...
    }
};

请参见

尝试此
var sidebar=$('.stickem').stickySidebar()
然后尝试
sidebar.destroy()
谢谢Max,但它返回“未定义的不是函数”谢谢!但是在插件代码()中,他们首先像您一样将其作为一个函数编写,但随后所有其他函数都在一个“原型”中,我不知道如何访问。。我对重写整个插件不感兴趣,只是需要一种方法,在我重新加载页面/内容时销毁它/与之相关的所有内存。令人困惑的是,该链接有两个同名函数:
$.fn.stickySidebar
$.stickySidebar
<代码>$。第28行调用stickySidebar
,作为构造函数(即使用
new
)。这意味着
$.stickySidebar.prototype的所有元素都将成为这样构造的所有对象的元素,例如第46行和第60行的
This
和第70行的
self
。因此,这些行调用方法
init
initValues
stickness
,它们在
$.stickySidebar.prototype
中定义。大卫,谢谢你的回复!非常感谢。我读了这篇文章,但仍然不确定如何调用destroy函数。如果我像这样运行构造函数:$('.sticky').stickySidebar();我如何在原型中调用函数,或者是否有其他方法删除与插件相关的所有数据?我也尝试了removeData(),但一直出现“undefined function”错误。tiaLine 66在每次运行脚本时将处理程序绑定到
窗口
对象。如果
window
是一个持久对象,这意味着它会添加越来越多的处理程序,并且每次调整大小或滚动时都会运行这些处理程序。没有
destroy功能,作者对此没有做任何处理。我能看到的最佳修复方法是在调用
$('.stickem').stickySidebar()之前运行
$(window).off('resize.stickySidebar scroll.stickySidebar')
;这将删除在上一页加载期间设置的处理程序。(我还没有测试过这个。)这很有效。非常感谢David Knipe,感谢你的帮助和耐心,感谢你几天来一直坚持我的问题。你的帮助比我能给你的分数要多得多。再次感谢。
//code  
$.fn.stickySidebar = function(action) {
    if (action === 'destroy') {
        ...
    }
};