在jQuery中,我知道我们可以将true
或false
值传递给元素的toggle
可见性。我无法slideToggle
做同样的事情。有什么帮助吗?
例如,而不是:
if (true)
$('something').slideDown();
else
$('something').slideUp();
我真的想做类似的事情:
$('something').toggle(myBoolValue);
但我想用 slideToggle
。
请my example of jsfiddle了解我要做的事情。
这可能吗?
答案 0 :(得分:16)
slideToggle
可选地需要2个参数duration
和callback
,因此传递true / false以显示/隐藏将不起作用。您可能必须编写自己的插件来实现此逻辑。像这样的东西
$.fn.mySllideToggle = function(show){
if(show){
$(this).slideDown();
}
else{
$(this).slideUp();
}
}
答案 1 :(得分:5)
更新:显然有一个增强请求,为了保持一致性而添加此功能,但他们投了反对票:Ticket #10491
答案 2 :(得分:3)
这很简单:
$.fn.slideToggleBool = function(bool, options) {
return bool? $(this).slideDown(options) : $(this).slideUp(options);
}
享受!
答案 3 :(得分:1)
它可以像这样被填充:
;(function($) {
var slideToggleOrig = $.fn.slideToggle;
$.fn.slideToggle = function(display) {
var fn,
args = arguments;
if ('boolean' != typeof display) {
fn = slideToggleOrig;
}
else {
if (display) {
fn = this.slideDown;
}
else {
fn = this.slideUp;
}
args = Array.prototype.slice.call(args, 1);// hide the extra arg from official functions
}
return fn.apply(this, args);
};
})(jQuery);
这可以通过检测slideToggle
的第一个参数是否为布尔值(不仅仅是真/假),如果是,则替换具有兼容签名的up和down函数。这意味着您可以使用任何现有签名,但可以在开头添加一个额外的参数。它也可以正确链接,而无需修改堆栈或创建新对象。
答案 4 :(得分:-4)