删除自执行匿名函数
Removing self executing anonymous function
我正在使用匿名函数和Slider()函数。我只需要在一个功能中具有所有相同的功能。我正在使用的匿名函数应该被删除。下面的代码应该进入一个函数。
这是我尝试过的:
http://jsfiddle.net/QNZDX/5/
$(function() {
//FadeIn/FadeOut Image on Set Time Interval on Slide
timer=setInterval(Slider, mainInterval);
var div=$('<div id="paging_inner"></div>');
for(i=0;i<maximages;i++)
{
div.append($('<a id="page_'+(i+1)+'" data-index="'+(i+1)+'"><span></span></a>'));
}
$('#paging').append(div);
$('#paging a').on('click', function(e){
e.preventDefault();
clearInterval(timer);
prevIndex=$(this).attr('data-index')-1;
$('#paging div a span').stop(1,1);
Slider();
timer=setInterval(Slider, mainInterval);
});
});
function Slider() {
$('#imageSlide').fadeOut("slow", function() {
if (prevIndex >= maximages) prevIndex = 0;
$("#panel").fadeIn("slow").css('background', '#000');
var title = $xmldata.find("images").find("image:eq(" + prevIndex + ")").find("title").text();
$("#title").text(title).fadeIn("slow");
var imgurl = $xmldata.find("images").find("image:eq(" + prevIndex + ")").find("url").text();
$(this).attr('src', imgurl).fadeIn("slow");
var desc = $xmldata.find("images").find("image:eq(" + prevIndex + ")").find("desc").text();
$("#desc").text(desc).fadeIn("slow");
$('#paging a span')
.removeClass('active').css('display','block');
$('#paging a#page_'+(prevIndex+1)+' span')
.addClass('active')
.slideUp(mainInterval);
prevIndex++;
});
}
});
首先,
它不仅仅是一个匿名函数 - 它是一个自调用匿名 功能
但在这种情况下,完全没有必要,
这将与以前一样工作
//FadeIn/FadeOut Image on Set Time Interval on Slide
timer = setInterval(Slider, mainInterval);
var div = $('<div id="paging_inner"></div>');
for (i = 0; i < maximages; i++) {
div.append($('<a id="page_' + (i + 1) + '" data-index="' + (i + 1) + '"><span></span></a>'));
}
$('#paging').append(div);
$('#paging a').on('click', function(e) {
e.preventDefault();
clearInterval(timer);
prevIndex = $(this).attr('data-index') - 1;
$('#paging div a span').stop(1, 1);
Slider();
timer = setInterval(Slider, mainInterval);
});
function Slider() {
$('#imageSlide').fadeOut("slow", function() {
if (prevIndex >= maximages) prevIndex = 0;
$("#panel").fadeIn("slow").css('background', '#000');
var title = $xmldata.find("images").find("image:eq(" + prevIndex + ")").find("title").text();
$("#title").text(title).fadeIn("slow");
var imgurl = $xmldata.find("images").find("image:eq(" + prevIndex + ")").find("url").text();
$(this).attr('src', imgurl).fadeIn("slow");
var desc = $xmldata.find("images").find("image:eq(" + prevIndex + ")").find("desc").text();
$("#desc").text(desc).fadeIn("slow");
$('#paging a span').removeClass('active').css('display', 'block');
$('#paging a#page_' + (prevIndex + 1) + ' span').addClass('active').slideUp(mainInterval);
prevIndex++;
});
}
函数中用"var"声明的任何内容都是私有的 功能,并且无法从外部访问。这实际上是 使用自调用匿名函数的主要原因:提供 本地范围,您可以在其中设置函数和变量,而无需 使全局命名空间混乱。
查看更新的演示
相关文章:
- 等待回调函数执行
- 暂停函数执行流程,直到ajax请求完成
- Bigcommerce-是否可以在函数执行后更改文本
- 如何对jquery中的未命名函数执行.call()
- 等待函数执行后再继续
- mootools类型的函数将文本作为函数执行
- 停止从另一个函数执行Javascript函数
- Jquery回调函数执行多次
- 如何使即兴 jquery 暂停当前函数执行
- JavaScript 双函数执行
- 来自函数 Javascript 的 NaN 返回值 ||函数执行顺序
- 如何在 JS 中调用 2 次或更多次时延迟函数执行
- 函数执行的次数超出预期
- JS中函数执行错误
- 为什么这个函数执行了两次
- 从子函数执行父函数;t更新父级'的属性
- 如何在jQuery函数执行's处于活动状态
- 使用javascript函数执行php文件
- jQuery函数执行顺序
- javascript中同步函数执行中的问题