Javascript,原型对象,jQuery和计时器
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Javascript,原型对象,jQuery和计时器,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2541字,纯文字阅读大概需要4分钟。
内容图文
![Javascript,原型对象,jQuery和计时器](/upload/InfoBanner/zyjiaocheng/655/285244bf67e644e6a4539279f78d0158.jpg)
我以为我已经通过类型更正在星期五解决了这个问题,但是我没有:(
我一直在努力寻找解决这个问题的方法(如果有的话).也许我不是在寻找正确的东西,但是我只是找不到解决方案…
设置:
$.myPlugin = function(element, options){
this.myElement = $(element);
this.myElement.data('rotator', '');
this.myElement.data('settings', $.extend({}, $.myPlugin.defaultOptions, options));
this.mainFunction(this.myElement);
};
$.myPlugin.defaultOptions = { // yadda yadda };
$.myPlugin.prototype = {
mainFunction : function(myself){
// establish initial parameters
var TEST = Math.rand();
// do a bunch of stuff
$(myButton).live('click', function(){
alert(TEST) //<---FOR TESTING PURPOSES
// do other things
myself.data('rotator', setTimeout(function(){
// click button after x period
myButton.click();
}, x ));
});
},
destroy : function(){
myself = $(this);
myself.myElement.removeData('settings');
clearTimeout(myself.data('rotator'));
}
};
$.fn.myPlugin = function(options) {
// parse options
this.each(function(){
var instance = $(this).data('myPlugin');
// blah blah blah ... on create
$(this).data('myPlugin', new $.myPlugin(this, args));
// blah blah blah ... on destroy
instance['destroy'].apply(this);
$(this).data('ddGallery', null);
};
return this;
};
所需功能:
按照我的逻辑,我想在元素上创建一个对象.然后,插件将元素的内容存储在变量中,并将新内容放入其中.点击时会调用一个自动定时事件,并带有.live()点击监听器. click事件会重置计时器,从而导致循环(与使用setInterval相反).销毁时,我替换了存储的原始html内容,并想杀死该对象.到目前为止,这一切正常.然后,我希望能够在元素上重新创建对象(也许传递不同的设置).
这是所有错误的地方:
销毁后在同一元素上重新创建对象时,原始计时器继续运行.我无法摆脱臭豆腐的计时器,而我正要扯掉我的头发!
为了进行测试,我在初始化时设置了一个随机数,并在单击时提醒该数字.最初,我可能会收到例如“ 0.1234”的警报.然后,我可以销毁对象(我只是在窗体按钮上使用侦听器来创建和销毁).元素将返回其初始状态,并快乐地无限期地坐着.但是,一旦我再次在元素上运行插件,原始的“ 0.12345”警报就会立即弹出,而不会延迟(并且所有动画都会触发).随后是另一个新的弹出窗口,例如“ 0.5678”.现在,两个计时器都继续向该元素触发,造成了严重破坏.
我想念什么?
解决方法:
您不会在您的destroy方法中取消绑定按钮上的原始click事件.您需要添加一个呼叫,例如:
myself.die('click');
在你的破坏方法.您看到将来的点击提示原始随机数的原因是因为您是第一次将封闭事件绑定到click事件.您可以杀死计时器,但不要取消绑定点击处理程序.
下次单击该按钮时,将绑定一个新的单击处理程序.现在您有两个单击处理程序,每个单击处理程序都是一个闭包,用于记住创建时生成的随机数.现在,单个计时器会重复触发该元素,每次单击都会触发两个单击处理程序.
内容总结
以上是互联网集市为您收集整理的Javascript,原型对象,jQuery和计时器全部内容,希望文章能够帮你解决Javascript,原型对象,jQuery和计时器所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。