jQuery play/pause jQuery function
jQuery play/pause jQuery function
我想做的是播放和暂停一个功能,即按下一个按钮启动一个函数,按一个按钮暂停等等。我不完全确定如何做到这一点,我已经尝试过 .live(( 和 .die((,但它们不起作用。
小提琴
我在下面有HTML
<button class="play">play</button>
<button class="pause">pause</button>
<div class="divafter"></div>
和 jQuery,我不完全确定 .die(( 做什么,但在 jsfiddle 上似乎加快了间隔时间。
(function($){
playing = function() {
window.setInterval(function() {
$(".divafter").after("playing <br/>");
}, 500);
};
})(jQuery);
$(".play").click(function(){
playing().live();
});
$(".pause").click(function(){
playing().die();
});
试试这个jsFiddle的例子。你需要使用 clearInterval(( 来停止 setInterval((。
j查询:
var foo;
playing = function() {
foo = window.setInterval(function() {
$(".divafter").after("playing <br/>");
}, 500);
}
$(".play").click(function() {
playing();
});
$(".pause").click(function() {
clearInterval(foo);
});
live()
和die()
与你想要的无关。所以忘记那些:)
您需要停止已启动的间隔回调。像下面的演示一样
<button class="play">play</button>
<button class="pause">pause</button>
<div class="divafter"></div>
(function($){
var interval;
var playing = false;
$(".play").click(function(){
if(playing){
return;
}
playing = true;
interval = setInterval(function() {
$(".divafter").after("playing <br/>");
}, 500);
});
$(".pause").click(function(){
playing = false;
clearInterval(interval);
});
})(jQuery);
Jsfiddle 不会加快任何速度,您只需启动多个间隔回调。
您必须使用 clearInterval 来模拟暂停效果。
像这样抓取间隔的实例
playing = setInterval(function() {
$(".divafter").after("playing <br/>");
}, 500);
并清除暂停
clearInterval(playing);
代码的用法如下:
var playstatus;
(function($){
playing = function() {
return setInterval(function() {
$(".divafter").after("playing <br/>");
}, 500);
};
})(jQuery);
$(".play").click(function(){
playstatus = playing();
});
$(".pause").click(function(){
clearInterval(playstatus);
});
演示
演示小提琴
$(function(){
var loop;
function playing() {
loop = setInterval(function() {
$(".divafter").after("playing <br/>");
}, 500);
}
$(".play").click(function(){
playing();
});
$(".pause").click(function(){
clearInterval(loop);
});
});
快乐编码
我不完全确定 .die(( 的作用,但在 jsfiddle 上似乎加快了间隔时间。
这是因为这段代码:
playing().die();
。相当于这个:
var playingResult = playing();
playingResult.die();
也就是说,首先调用playing()
函数,该函数始终创建另一个间隔。然后,它尝试对从playing()
返回的任何内容调用die()
方法,该方法始终只是一个间隔 id,即一个数字 - 它没有die()
方法(并且会给出错误(。
这同样适用于playing().live()
- 所以基本上每次你点击任何一个按钮时,它都会增加另一个间隔,这意味着实际输出到屏幕的速度。
您需要的是使用 setInterval()
和 clearInterval()
设置和清除相同的间隔,或者基本上让间隔一直运行,但在其回调中放置一个测试以测试它当前是否暂停。雅各布·厄廷格(Jacob Oettinger(的回答很好地展示了如果连续多次按下Play,如何在不创建重复间隔的情况下设置和清除间隔(迄今为止没有其他答案对此进行测试(。另一种方法如下:
(function($){
var playing = false,
intervalId = setInterval(function() {
if (!playing)
return;
$(".divafter").after("playing <br/>");
}, 500);
$(".play").click(function(){
playing = true;
});
$(".pause").click(function(){
playing = false;
});
})(jQuery);
演示:http://jsfiddle.net/ExCKW/
- $(document).ready和jQuery(function($)不工作;jQuery已定义,但脚本尚未定义;t进
- 通过将按钮id从Code-behind传递给Jquery Function,Set buttons display no
- Hangman jQuery Function
- vimeo eventlistener to execute jquery function
- Ajax Jquery function params
- jQuery function VS Javascript function
- 为什么我要在jQuery(function ($) { });中封装一个jQuery函数
- Jquery $(function(){}),这是什么意思
- Mixing window.onload and jQuery $(function(){})
- jQuery $( function() {} ) and $(document).ready the same?
- jQuery play/pause jQuery function
- Jquery function css
- Jquery function?
- jQuery(function) 或 $(function) 是做什么的
- Mouseout and Mouseenter jquery function
- form_for with onsubmit() jQuery function
- replaceWith(); JQuery function
- jQuery.function的字符串
- Visibility JQuery Function (ready(), change()...)
- 在jquery-function中添加ID或类似的类