为什么在localStorage中存储JS slideToggle不起作用

时间:2017-11-08 13:25:43

标签: javascript jquery

我有几个按钮,包括具有相同名称的div。不幸的是我无法更改名称,它们是由cms生成的。

因此,例如,当我只点击第一个按钮时,只隐藏或显示第一个div,这很好。

但刷新页面打开或关闭所有div取决于第一个div关闭或打开,我不想要它。

然后我创建了这个用于测试的代码,该代码有效:

<button class="a">Button</button>
<div class="target"></div>
<button class="a">Button</button>
<div class="target"></div>

$('.a').click(function() {
  $(this).next(".target").slideToggle(function() {
    localStorage.setItem('visible-' + $(this).index(), $(this).is(":visible"));
  });
});

$.each($('.target'), function(k, trg) {
  $(trg).toggle(localStorage.getItem('visible-' + $(trg).index()) === 'true'); 
});

在这里你可以看到jsfiddle例子:https://jsfiddle.net/pj3gs0z9/8/

当我想在此网站上暗示此方法时:http://phpbb32.majordroid.com/index.php

因某些未知原因无效

你需要点击下面的减号,然后再加上打开。只需在此之后尝试刷新页面,由于某种原因它会关闭所有或打开下面的所有div ...

我使用过这段代码:

$("ul.topiclist.collapse-btn").click(function(){
   $(this).parent().parent().parent().next("ul.topiclist.working-collapse-btn").trigger('click');
   $(this).toggleClass('plus');
});

$('ul.topiclist.working-collapse-btn').click(function() {
  $(this).next("ul.topiclist.forums").slideToggle(function() {
    localStorage.setItem('visible-' + $(this).index(), $(this).is(":visible"));
  });
});

$.each($('ul.topiclist.forums'), function(k, trg) {
  $(trg).toggle(localStorage.getItem('visible-' + $(trg).index()) === 'true'); 
});

谢谢

0 个答案:

没有答案