Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
启动停止jquery插件_Jquery_Jquery Plugins - Fatal编程技术网

启动停止jquery插件

启动停止jquery插件,jquery,jquery-plugins,Jquery,Jquery Plugins,我想写一个jQuery插件,它将在一个循环的时间间隔内改变x的背景位置。 $(“#元素”).pluginName()-启动循环操作 然后我想通过$('#element')停止它或$(“#元素”).pluginName().stopFunction() 可能吗?你能告诉我怎么写吗 编辑(我的解决方案): var LoadingAjax=函数(元素、选项){ 变量元素=$(元素); var object=这个; var默认值={ 宽度:30, 差距:1, 间隔时间:100,, 最大帧:8 }; v

我想写一个jQuery插件,它将在一个循环的时间间隔内改变x的背景位置。
$(“#元素”).pluginName()-启动循环操作

然后我想通过
$('#element')停止它
$(“#元素”).pluginName().stopFunction()

可能吗?你能告诉我怎么写吗



编辑(我的解决方案):

var LoadingAjax=函数(元素、选项){
变量元素=$(元素);
var object=这个;
var默认值={
宽度:30,
差距:1,
间隔时间:100,,
最大帧:8
};
var设置=$.extend(默认值,选项| |{});
无功定时器;
var帧=1;
var是_加载;
//公共方法
this.startAnimate=函数(){
log('start animate');
是否加载=真;
定时器=设置超时(循环、设置、间隔);
};
this.stopAnimate=函数(){
console.log('stop animate');
is_loading=false;
清除超时(计时器);
};
this.isLoading=函数(){
返回即为加载;
}
//私有方法
var循环=函数(){
console.log('frame:'+frame);
if(帧<默认值.maxFrame){
css('background-position','-'+(frame*(defaults.width+defaults.gap))+'px 0');
frame++;
}
否则{
css('background-position','0');
帧=1;
}
定时器=设置超时(循环、设置、间隔);
};
};
$.fn.loadingAjax=函数(选项){
返回此值。每个(函数(){
var元素=$(此);
//如果此元素已经有插件实例,则提前返回
if(element.data('loader'))返回;
//将选项传递给插件构造函数
var plugin_instance=newloadingajax(这个,{});
//将插件对象存储在此元素的数据中
element.data('loader',plugin\u实例);
});
};
$(文档).ready(函数(){
$('a#start')。单击(函数(){
var loadingElement=$('.loading.ajax');
loadingElement.loadingAjax();
var plugin_instance=loadingElement.data('loader');
if(plugin_instance.isLoading()==true){
plugin_instance.stopAnimate();
}
否则{
plugin_instance.startAnimate();
}
});
});

这个链接非常有用:

你可以从阅读开始。

当然,你可以做一些事情,比如使用setInterval并将结果存储在元素的.data上……如果你想问这个问题,在处理这个项目之前,你可能应该花更多的时间学习js和jquery的基础知识

$.fn.pluginName = function(){
    return this.each( function(){
        //Something cool and fancy happens here.

        //Remember you can have access to the element using the variable 'this'.
    }
}
将使您的插件可用于调用
$(“#元素”)。pluginName()

现在,关于间隔,你可以这样做:

var holder = setInterval( function(){
    //The code here repeats every half a second.
}, 500 );
然后用这个清洁它:

clearInterval( holder );
唯一的问题是你必须对范围非常谨慎。使
holder
成为一个全局变量应该可以做到这一点,但我建议你抓住机会通过阅读来学习一些性感的绝语

clearInterval( holder );