我在这里删减了一些代码来发布并找出为什么runAnimation()不能访问$('#sm_logo')事件处理程序?是因为它是一个自我启动功能吗?我可以解决这个问题,但我真的很想知道为什么不能打电话的工作原理。
(文档)$。就绪(函数(){
var $boxes = $('.box').hide(), div = 0, loop = 0, t;
(function runAnimation (){
$($boxes[div++] || []).animate({opacity: 'toggle'}, '10', function(){
$(this).hide();
if(div != $boxes.length) {
$('.style-7').hide('10');
runAnimation();
}
else {
$('.style-7').show();
div=0;
(loop < companies.length -1) ? ++loop : loop = 0;
t = setTimeout(function(){
runAnimation();
}, 2000);
}
});
})()
$('#sm_logo').toggle(function(){
if( $($boxes).is(':animated') )
$($boxes).stop();
else if ( $('.style-7').is(':visible'))
clearTimeout(t);
}, function() {
runAnimation(); //why does this not find the function?
//location.href = location.href; //this is how I worked around the prob, but
//i don't like the fact that the animation restarts from 0
});
}); //结束doc准备
答案 0 :(得分:2)
通过将()
置于其声明周围,将其隐藏在全局命名空间中。
删除它们就会存在。