我尝试创建可以显示/隐藏多个div的按钮,我还想使用localStorage来记住过滤(点击了哪些按钮,哪些按钮没有)。< / p>
我找到了this jsfiddle,并试图让它适应我的目的。 Here is my jsfiddle。我非常感谢帮助更新这个jsfiddle以使其正常工作:
以下是my fiddle的代码。
<button type="button" class="ncaabfilter btn btn-xs btn-default">NCAAB</button> <button type="button" class="ncaaffilter btn btn-xs btn-default">NCAAF</button> <button type="button" class="nbafilter btn btn-xs btn-default">NBA</button> <button type="button" class="nflfilter btn btn-xs btn-default">NFL</button>
<div class="ncaaf">
NCAAF Game 1
</div>
<div class="nfl">
NFL Game 1
</div>
<div class="nba">
NBA Game 1
</div>
<div class="ncaab">
NCAAB Game 1
</div>
<div class="ncaaf">
NCAAF Game 2
</div>
<div class="nfl">
NFL Game 2
</div>
<div class="nba">
NBA Game 2
</div>
<div class="ncaab">
NCAAB Game 2
</div>
$('.ncaabfilter').click(function(){
$('.ncaaf, .nfl, .nba').toggle(800);
var isVisible = $('.ncaaf, .nfl, .nba').is(':visible');
localStorage.setItem('visible', isVisible);
$('.ncaabfilter').toggleClass('btn-default btn-danger');
});
var isVisible = localStorage.getItem('visible') === 'false' ? false : true;
$('.ncaaf, .nfl, .nba').toggle(isVisible);
非常感谢帮助!
更新:selami下面指出localStorage不记得因为800s切换div。我想要一个动画,所以也许我在localStorage颁布之前等待800秒?而且,当刷新页面时,如何让localStorage保留切换按钮的btn-danger类?
答案 0 :(得分:1)
toogle(800)
需要800毫秒并且:在此时间之后设置可见属性。因此,var isVisible = $('.ncaaf, .nfl, .nba').is(':visible')
会返回true,因为它不会等到完成toogle。
也是getItem(&#39;可见&#39;) === &#39; false&#39;包含3个相等的字符。删除其中一个。
尝试以下JS
$('.ncaabfilter').click(function(){
$('.ncaaf, .nfl, .nba').toggle();
var isVisible = $('.ncaaf, .nfl, .nba').is(':visible');
localStorage.setItem('visible', isVisible);
$('.ncaabfilter').toggleClass('btn-default btn-danger');
});
var isVisible = localStorage.getItem('visible') == 'false' ? false : true;
$('.ncaaf, .nfl, .nba').toggle(isVisible);
要使用800参数进行切换,请使用回调参数。在toggle()方法完成后执行的回调函数。
$('.ncaabfilter').click(function(){
$('.ncaaf, .nfl, .nba').toggle(800, function () {
var isVisible = $('.ncaaf, .nfl, .nba').is(':visible');
localStorage.setItem('visible', isVisible);
});
$('.ncaabfilter').toggleClass('btn-default btn-danger');
});
带有800动画的
答案 1 :(得分:0)
我认为你不需要localStorage就像修改js代码一样,
$('#songpicker').on('change', function() {
change( $(this).val() );
})
我希望它能按照您的预期运作,如果不让我知道,您不必删除动画。不需要为$('.btn').click(function(){
var button = $(this);
var contents = button.text().trim().toLowerCase();
if (button.hasClass('btn-danger')) {
$('.' + contents).hide(800);
} else {
$('.' + contents).show(800);
}
$('.'+ contents +'filter').toggleClass('btn-default btn-danger');
});
添加课程data
。另外我认为默认情况下保留按钮类divs
会更好,因为它会显示所有选项都可见。
更新为记住按钮状态
如果您想记住localStorage中所选按钮的状态,请检查此Example to remember state。为此,您必须为按钮添加btn-danger
属性,该按钮用作localStorage中每个按钮的键。按钮选择状态将保留为这些键的值。