JS如何控制匿名函数
JS How to control an anonymous function
场景:
我有一个要自动调用的函数。但是在单击鼠标时我希望此功能停止。 JS中如何控制匿名函数?
例子
HTML
<div id="seventyfive" style="position:absolute; font-size:10px; font-weight:bold">
<img src="https://upload.wikimedia.org/wikipedia/commons/thumb/f/f1/Heart_coraz%C3%B3n.svg/200px-Heart_coraz%C3%B3n.svg.png" style="width:50px"/>
</div>
JS
(function pulse(back) {
$('#seventyfive').animate(
{
'font-size': (back) ? '10px' : '15px',
opacity: (back) ? 0.3 : 1
}, 600, function(){pulse(!back)});
$('#seventyfive img').animate(
{
'width': (back) ? '50px' : '40px'
}, 600);
})(false);
var on = true;
$("#seventyfive").click(function(){
on = !on;
if(on){
// Start/Stop Pulse function
}
});
JSFiddle 示例JSFiddle Example
您可以使用 CSS 从硬件加速中获益,这会极大地提高性能。
$("#seventyfive").click(function() {
$(this).toggleClass("pulsing");
});
.heart.pulsing img {
animation: pulse 600ms ease infinite alternate;
}
@keyframes pulse {
0% {
transform: none;
}
100% {
transform: scale(1.2);
opacity: 0.3;
}
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js"></script>
<div id="seventyfive" class="heart" style="position:absolute; font-size:10px; font-weight:bold">
<img src="https://upload.wikimedia.org/wikipedia/commons/thumb/f/f1/Heart_coraz%C3%B3n.svg/200px-Heart_coraz%C3%B3n.svg.png" style="width:50px" />
</div>
有了这个,只需将pulsing
class施加到#seventyfive
,心脏就会跳动。请注意,这会激活 opacity
和 transform
,而不是 font-size
,以避免触发浏览器执行重新布局。
场景:
我有一个要自动调用的函数。但是在单击鼠标时我希望此功能停止。 JS中如何控制匿名函数?
例子
HTML
<div id="seventyfive" style="position:absolute; font-size:10px; font-weight:bold">
<img src="https://upload.wikimedia.org/wikipedia/commons/thumb/f/f1/Heart_coraz%C3%B3n.svg/200px-Heart_coraz%C3%B3n.svg.png" style="width:50px"/>
</div>
JS
(function pulse(back) {
$('#seventyfive').animate(
{
'font-size': (back) ? '10px' : '15px',
opacity: (back) ? 0.3 : 1
}, 600, function(){pulse(!back)});
$('#seventyfive img').animate(
{
'width': (back) ? '50px' : '40px'
}, 600);
})(false);
var on = true;
$("#seventyfive").click(function(){
on = !on;
if(on){
// Start/Stop Pulse function
}
});
JSFiddle 示例JSFiddle Example
您可以使用 CSS 从硬件加速中获益,这会极大地提高性能。
$("#seventyfive").click(function() {
$(this).toggleClass("pulsing");
});
.heart.pulsing img {
animation: pulse 600ms ease infinite alternate;
}
@keyframes pulse {
0% {
transform: none;
}
100% {
transform: scale(1.2);
opacity: 0.3;
}
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js"></script>
<div id="seventyfive" class="heart" style="position:absolute; font-size:10px; font-weight:bold">
<img src="https://upload.wikimedia.org/wikipedia/commons/thumb/f/f1/Heart_coraz%C3%B3n.svg/200px-Heart_coraz%C3%B3n.svg.png" style="width:50px" />
</div>
有了这个,只需将pulsing
class施加到#seventyfive
,心脏就会跳动。请注意,这会激活 opacity
和 transform
,而不是 font-size
,以避免触发浏览器执行重新布局。