【发布时间】:2011-11-28 21:06:33
【问题描述】:
我最近开始开发我的第一个插件,但我有点卡住了。我的问题是插件启动后我不知道如何停止它。停止它的意思是:当我单击 #div 时,插件停止,当我再次单击它时,它开始:
像这样的:
$("#div").click(function(){
$(this).plugin(); // starts the plugin
});
有什么想法吗?
这是一个演示:http://jsfiddle.net/nmsdvid/hmDyR/
到目前为止,这是我的代码:
(function( $ ) {
$.fn.plugin = function(params) {
params = $.extend( {param1: 10, parma2: 5, param3:0, param4:100}, params);
var timer = setInterval( plugin, params.param1);
var showTimes = params.param3;
var counter = 0;
function plugin() {
for (var i = 0; i < params.param2; i++) {
// code
}
if (counter == 0) { counter++; return; }
$('#div')
.stop()
.hide()
.filter( function() { return this.id.match('frame' + counter); })
.show();
if(counter == params.param2){
counter = 0;
showTimes --;
if(showTimes == 0)
clearInterval(timer);
}else{
counter++;
}
}
return this;
};
})( jQuery );
【问题讨论】:
-
“停止功能”是什么意思?此外,我们不是来为您的代码编写改进的;你应该这样做。
-
你的插件到底是做什么用的?
-
另外,你的小提琴只包含你的插件代码,没有示例用例,这将有助于理解你的问题,尽管它很模糊。
-
你们解决问题的速度太快了。他的方法启动了一个间隔计时器,OP 需要知道如何存储该计时器句柄并在以后停止它。我正要回答这个问题,但你们都这么快(不到 7 分钟)关闭了它,现在它不会接受我的回答。是的,问题写的不是很清楚,但是如果你只看引用的代码,你就会明白
stop在问题/代码的上下文中是什么意思。 -
@FrédéricHamidi - 当我说“结束一个问题太快了”时,我是在向所有在问题的前几分钟投票结束的人表达这一点,甚至懒得看参考代码来理解被问到的内容。在提出澄清问题时,在立即投票结束之前让 OP 有一些时间做出回应似乎是合理的。 OP 越新,可能需要更多的时间,因为他们可能不知道要关注直接的 cmets。这是一个措辞不佳的问题,但稍加努力就可以理解。
标签: javascript jquery jquery-plugins