2011-03-22 30 views
0

我有一个按钮切换是否引用的div是否可见。本来,我用的是代码:jQuery .toggle(showOrHide):执行问题

$('#search-options-btn').click(function() { 
    if ($('#search-options').is('.hidden')) { 
     $('#search-options').removeClass('hidden'); 
    } else { 
     $('#search-options').addClass('hidden'); 
    } 
}); 

然而,在试图寻找更清洁的代码,我遇到了jQuery toggle()方法,根据API,它有一个方法实现

.toggle(showOrHide)  
showOrHide: A Boolean indicating whether to show or hide the elements. 

在此之前描述使我相信这是一种通过传递...标识符来显示或隐藏的快捷实现方法? showOrHide纳入toggle()方法。

当然,尝试此:

$('#search-options-btn').click(function() { 
    $('#search-options').toggle(showOrHide); 
}); 

产生错误在我的萤火控制台:

showOrHide is not defined 
[Break On This Error] $('#search-options').toggle(showOrHide); 

我也试着定义showOrHide作为初始化为false一个布尔值;错误消失,但问题不是固定的。

据jQuery的网上API,这应该是等同于

if (showOrHide == true) { 
    $('#foo').show(); 
} else if (showOrHide == false) { 
    $('#foo').hide(); 
} 

除非我完全缺少的是如何工作的。任何人都可以填补我在这里做错了吗?我一直无法找到类似的实现。

回答

6

你应该只需要toggle(),没有别的。

$('#search-options-btn').click(function() { $('#search-options').toggle(); });

0

showOrHide是内部名称。你传递一个布尔值:

$('#...').showOrHide(true) 

,如果你想的项目是可见的,false如果你想让它隐藏起来。

0

它只是阶级之间,而不是与布尔切换..

$('#search-options-btn').click(function() { $('#search-options').toggle('yourClassName'); }); 

如果发现yourClassName,然后它会删除同一,否则会加重它。

+0

不,你正在考虑'.toggleClass()'方法。 '.toggle()'方法_does_(可选)接受布尔值。 – nnnnnn 2014-05-14 12:19:58