我可以失明还是没有参数,选项或任何禁用动画的东西:
.toggle()
我只想通过切换()来显示()和隐藏()它们,但是我使用的每个切换,滑动切换,淡入淡出甚至正常切换都带有动画。
如何“删除”它们?
只需确保 toggle() 的参数解析为 true,而不是 1。
toggle(1); // animation
toggle(true); // no animation.
如果未提供任何参数,则 toggle() 立即生效。
slideToggle() 和 fadeToggle() 使用动画的默认值,为了使它们立即生效,传递值 '0';
这些都是一样的,只是显示和隐藏元素:
$('button').on('click', function() {
ToggleElement.toggle();
});
$('button').on('click', function() {
ToggleElement.slideToggle(0);
});
$('button').on('click', function() {
ToggleElement.fadeToggle(0);
});
然而,没有理由在没有动画的情况下使用底部的两个,因为这样就失去了意义。
更快一点是element.style.display = 'none'/'block'
在 if / else 语句中使用原生 javascripts。
您始终可以提供自己的切换功能:
$.fn.quicktoggle = function() {
this.each(function() {
var $this = $(this);
if ($this.is(':visible')) {
$this.hide();
} else {
$this.show();
}
});
return this;
};
只需使用不带参数的切换,它应该是立即的。
从文档:
在没有参数的情况下, .toggle() 方法只是切换元素的可见性:
$('.target').toggle();
直接关掉效果
jQuery.fx.off = true;
如果您想轻松替换代码中的所有实例,则更“强大”的方法是覆盖函数。
$.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);
};
演示:http: //jsfiddle.net/bChVe/3/
$('.clk').click(function(){
if(document.getElementById("ID").className == "p-cap hide")
{
document.getElementById("ID").className = "p-cap show";
}
else
{
document.getElementById("ID").className = "p-cap hide";
}
});
.p-cap { height:100px; width:100px; background :red; float:left; }
.clk { height:100px; width:100px; background :green; float:left; }
.hide { display: none; }
.show { display: block; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="clk"></div>
<div id="ID" class="p-cap hide"></div>