2011-10-10 35 views
0

我有一堆的显示和使用jQuery切换隐藏jQuery的切换与负载跨度

我目前使用此代码来显示和隐藏它与类自由度项目:

$('.dof').toggle(); 

其中工程很棒,但需要大约30秒才能完成切换。

我说这显示加载图像:

<a href="#" onclick="$('#loading').show();$('.dof').toggle();$('#loading').hide();"> 
    Toggle DOF 
</a> 

<span id="loading" style="display:none;"> 
    <img src="/assets/ajax-loader.gif" /> 
</span> 

这不是显示加载跨度。我可以确认加载图像显示是否显示:无;

我在做什么错?

编辑

我想这从约西亚Ruddell的建议

(原谅我用coffescript,所以我把它转换所有coffescript然后回来这里展出)

$('#toggledof').click(function() { 
    var $dofs, doflen, toggleComplete; 
    $("#loading").show(); 
    toggleComplete = function() { 
    return $("#loading").hide(); 
    }; 
    $dofs = $(".dof"); 
    doflen = $dofs.length; 
    return $dofs.each(function(i) { 
    $(this).toggle(); 
    if (i === doflen - 1) { 
     return toggleComplete(); 
    } 
    }); 
}); 

然后我将a标签更改为:

<a href="#" id="toggledof"> 
    Toggle DOF 
</a> 
+0

当你说需要30秒的时间你在说30秒的动画,或者页面上有这么多元素,需要30秒才能隐藏它们? –

+0

30秒来隐藏/显示它们全部 –

回答

0

我固定的问题与此代码,我猜.toggle()当你正在处理的1900元很烂....

的HTML

<div id="testdof" style="display:none"></div> <!-- because the dof elements are hidden at page load --> 

然后jQuery的

$('#toggledof').click(function() { 
    if ($('#testdof').css('display') === 'none') { 
    $(".dof").show(); 
    $("#testdof").show(); 
    } else { 
    $(".dof").hide(); 
    $("#testdof").hide(); 
    } 
}); 

这个运行速度足够快以至于不关心加载元素。

0

由于动画持续时间选项,切换功能不同步。您可以指定切换回拨。

$('.dof').toggle(function(){ 
    $('#loading').hide(); 
}); 

但是,如果有多个页面上.dof元素,回调会发生的每一个。

更新 您将需要跟踪切换进度中的位置。所有项目都被切换后,显示加载程序。另外,您可以考虑优化选择器以提高此操作的速度。至少您可以在.之前添加节点名称,例如div.dof

var toggleComplete = function(){ 
     $('#loading').hide(); 
    }, 
    $dofs = $('.dof'), 
    doflen = $dofs.length; 

$dofs.each(function(i){ 
    $(this).toggle(); 
    if(i == doflen -1) toggleComplete(); 
}); 
+0

我将添加上面我尝试过的代码,但仍无法显示加载范围。 –

+0

我不认为在最后隐藏该跨度甚至是一个问题,它似乎做得很好,它会在它运行切换之前显示它。 –

+0

也,我有td.dof和th.dof字段。我尝试将它们添加到开始时的一个onclick中,而且速度也一样慢。 –

0

要确定切换的速度,你可以使用重载函数:

$(selector).toggle(speed); 

其中速度参数可以采取以下值:“慢”,“快速”,“正常”,或以毫秒为单位的时间。

这将使您的动画按照您所希望的速度。

+0

对不起,我没有指定足够好,需要30秒来隐藏或显示它们,我不想设置速度。我正试图在处理过程中显示加载图像。 –