javascript - 使用可见性的 Jquery 大量加/减按钮

标签 javascript jquery html css

我尝试修改在这个问题的答案中找到的解决方案:

Jquery toggle (Click to show one div while hiding others)

但我需要更改显示/隐藏状态,这是因为我的 div 元素必须占用页面上的空间,保持在固定位置而不是下拉。 这是我的 jquery 代码:

$(".sticker").click(function(){
    var gid = $(this).attr('id');
    var id = gid.split("-")[1];

    if ($(this).children("img").attr("src")=="img/plus.png") {
        $(this).children("img").attr("src","img/minus.png");
        $('#'+id).addClass('visible');
    } 
    else {
        $(this).children("img").attr("src","img/plus.png");
        $('#'+id).removeClass('visible');
    }

}); 

html代码:

<div id="container">
 <div class="more" id="one">
  <div class="info">
    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
  </div>
 </div>
<div class="sticker" id="sticker-one"><img src="img/plus.png" width="28" height="28" /></div>

 <div class="more" id="two">
  <div class="info">
    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
  </div>
 </div>
 <div class="sticker" id="sticker-two"><img src="img/plus.png" width="28" height="28" /></div>

 <div class="more" id="three">
  <div class="info">
    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
  </div>
 </div>
 <div class="sticker" id="sticker-three"><img src="img/plus.png" width="28" height="28" /></div>
</div>

“可见”的 css 类是 =

.visible {
    visibility:visible;
}

Fiddle Demo

我想在点击一个新的“贴纸”时也隐藏“.more”打开的 div 的可见性,以便每次只打开一个 div。

最佳答案

您的代码似乎运行良好。您可能只需要设置 !important 因为它似乎不会在类更改时变得可见

.visible {
    visibility:visible !important;
}

这里还有一个更紧凑的修改代码。

$(".sticker").click(function() {

  var $t = $(this);
  var $img = $t.children("img");

  if ($img[0].src.indexOf('plus') > -1) {
    $img[0].src = 'img/minus.png';
    $t.prev('.more').addClass('visible');
  } else {
    $img[0].src = 'img/plus.png';
    $t.prev('.more').removeClass('visible');
  }

});
.visible {
  visibility: visible !important;
}
.more {
  visibility: hidden;
}
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

<div id="container">
  <div class="more" id="one">
    <div class="info">
      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
    </div>
  </div>
  <div class="sticker" id="sticker-one">
    <img src="img/plus.png" width="28" height="28" />
  </div>

  <div class="more" id="two">
    <div class="info">
      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
    </div>
  </div>
  <div class="sticker" id="sticker-two">
    <img src="img/plus.png" width="28" height="28" />
  </div>

  <div class="more" id="three">
    <div class="info">
      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
    </div>
  </div>
  <div class="sticker" id="sticker-three">
    <img src="img/plus.png" width="28" height="28" />
  </div>
</div>

这是你的代码

$(".sticker").click(function(){
    var gid = $(this).attr('id');
    var id = gid.split("-")[1];

    if ($(this).children("img").attr("src")=="img/plus.png") {
        $(this).children("img").attr("src","img/minus.png");
        $('#'+id).addClass('visible');
    } 
    else {
        $(this).children("img").attr("src","img/plus.png");
        $('#'+id).removeClass('visible');
    }

}); 
.visible {
  visibility: visible !important;
}
.more {
  visibility: hidden;
}
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

<div id="container">
  <div class="more" id="one">
    <div class="info">
      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
    </div>
  </div>
  <div class="sticker" id="sticker-one">
    <img src="img/plus.png" width="28" height="28" />
  </div>

  <div class="more" id="two">
    <div class="info">
      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
    </div>
  </div>
  <div class="sticker" id="sticker-two">
    <img src="img/plus.png" width="28" height="28" />
  </div>

  <div class="more" id="three">
    <div class="info">
      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
    </div>
  </div>
  <div class="sticker" id="sticker-three">
    <img src="img/plus.png" width="28" height="28" />
  </div>
</div>

关于javascript - 使用可见性的 Jquery 大量加/减按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27857370/

相关文章:

javascript - 从 JS 应用的 CSS3 转换不起作用

JavaScript 构造函数更改值

javascript - 修改一个 jQuery 函数来调整一个 div 的大小

javascript - 如何让代码等待确定/取消按钮选择?

javascript - jQuery 的 jquery-1.10.2.min.map 正在触发 404(未找到)

html - IE8 不尊重表格填充

html - 为什么 flexbox 容器周围有填充物?

html - CSS 修复了 div 元素下的导航崩溃

c# - 在 C# 中运行 javascript

javascript - JQuery:在元素的 HTML 之前附加项目