2012-04-30 83 views
2

可能我瞎或者没有参数,期权或任何禁用动画为:jQuery的切换没有动画需要

.toggle()

我只是想表明()和隐藏()他们通过切换(),但每个切换我使用slideToggle,fadeToggle,甚至正常切换与动画。

如何“删除”它们?

+2

请只要你不发表您的代码 – Curt

+0

t提供一个持续时间来切换,它应该是立即的。请告诉我们你的代码。 – j08691

+0

我在一个元素上使用了一个简单的点击处理程序和.toggle()。为什么倒票? – ggzone

回答

12

只需确保参数切换()解析为真,而不是1

toggle(1); // animation 
toggle(true); // no animation. 
+6

这对我没有任何作用。设置切换(真)意味着我只能显示内容不会再隐藏它。 – Will

3

你总是可以提供自己的切换功能:

$.fn.quicktoggle = function() { 
    this.each(function() { 
     var $this = $(this); 
     if ($this.is(':visible')) { 
      $this.hide(); 
     } else { 
      $this.show(); 
     } 
    }); 
    return this; 
}; 
+0

我认为你有一个额外的'''最后 – thecodeparadox

+0

@thecodeparadox oopsie - 很好的发现。 – Alnitak

+0

感谢这个功能 – ggzone

0

一个稍微“强加”的方法是重写的功能,如果你想轻松地更换所有实例代码。

$.fn.slideToggle = function(duration, callback) { 
    duration = 0; 
    callback = callback || function(){}; 
    this.toggle(duration, callback); 
}; 

$.fn.fadeToggle = function(duration, callback) { 
    duration = 0; 
    callback = callback || function(){}; 
    this.toggle(duration, callback); 
}; 

DEMO:http://jsfiddle.net/bChVe/3/

+0

嗯......这种方式有持续时间参数和回调的麻烦......编辑在一秒钟 –

+0

编辑与适当的回调和强制持续时间为0 –

+0

我不_think_你必须包装'$(this )'里面的jQuery插件。 – Alnitak

1

只要使用切换不带任何参数,它应该是立竿见影的。

从文档:

没有参数,所述.toggle()方法简单地切换元件的可见性 :

$('.target').toggle(); 
+0

尝试自己... .toggle()不带任何参数不仅切换显示或隐藏... theres还有持续时间的高度和宽度动画。我知道这个文件是错的。即时通讯使用最后一个稳定的jQuery版本。 – ggzone

+0

我在使用jQuery 1.7在jsfiddle中发布之前自己尝试过,并且它改变了可见性 – izb

6

肘节()是即时的,如果没有参数是提供。

slideToggle()和fadeToggle()使用默认值作为动画,使它们立即传递值'0';

这些都做同样的,只是显示和隐藏元素:

$('button').on('click', function() { 
    ToggleElement.toggle(); 
}); 

$('button').on('click', function() { 
    ToggleElement.slideToggle(0); 
}); 

$('button').on('click', function() { 
    ToggleElement.fadeToggle(0); 
}); 

FIDDLE

然而,有没有理由使用底部的两个没有动画,因为那种失败的地步。

稍微快一点就是在if/else语句中只使用javascript本地element.style.display = 'none'/'block'

2

只是关闭的影响

jQuery.fx.off = true;