javascript - 尝试让 jQuery 在单击时更改不同的 img src

标签 javascript jquery html css

我有 2 个单独的 div,它们在单击时会更改背景 img src,效果很好,但我希望它能更改与它一起显示的其他图像。例如。 div 1 被按下并变为“打开”,如果 div2 为“打开”,则它变为关闭。我的 jQuery 相当有限,并且它可以在可以更改图像的地方运行,但需要弄清楚如何将“关闭”类应用于尚未单击的图像。理想情况下,它会使用 attr(),这样我可以稍后添加更多内容。

jQuery

$(".box").on("click", function() {
      
      // need to make this function select the other div.
      if ($(this).hasClass("closed")) {
        $(this).addClass("open").removeClass("closed");
      } else {
        $(this).addClass("closed").removeClass("open");
      }
      
      var id = $(this).attr("data-id");
      $(this).toggleClass("open");
      $(".hideDivs").hide();
      $("#" + id).show();  
    });
 .container {
      width: 640px;
      height: 450px;
      background-color: #eee;
      box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
    }
    
    .text-primary {
      font-size: 14px;
      text-align: center;
      margin-bottom: 5px;
    }
    
    .box {
      cursor: pointer;
      width: 90px;
      height: 180px;
      display:block;
      margin:auto;
      background-image: url("http://res.cloudinary.com/dez1tdup3/image/upload/v1499052120/closed_vo1pn2.png");
    }
    
    .open {
      background-image: url("http://res.cloudinary.com/dez1tdup3/image/upload/v1499052120/open_ihcmuz.png");
    }
    
    .closed {
      background-image: url("http://res.cloudinary.com/dez1tdup3/image/upload/v1499052120/closed_vo1pn2.png");
    }
    
    .hideDivs {
      display: none;
    }
    
    .panel-body {
      padding: 10px;
      margin-top: 5px;
    }
    
    .title {
      font-weight: bold;
      font-size: 14px;
    }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="container">
      <div class="row">
        <div class="col-xs-6">
          <div class="box" data-id="divId1">
          </div>
        </div>
        <div class="col-xs-6">
          <div class="box" data-id="divId2">
          </div>
        </div>
      </div>
      <div class="row">
        <div class="col-xs-12">
          <div class="panel panel-default hideDivs" id="divId1">
            <div class="panel-body">
              <span class="title">Practices for safe packaging of cooked foods</span>         
              <ul>
                <li>Label and date all food.</li>
                <li>Package high-risk food in small batches for refrigeration and return to refrigerated storage as soon as possible (within 20 minutes).</li>
                <li>Store packaging products in a clean environment and protect from contamination.</li>
              </ul>          
            </div>
          </div>
          <div class="panel panel-default hideDivs" id="divId2">
            <div class="panel-body">
              <span class="title">Practices for safe freezing of cooked foods</span>
              <ul>
                <li>When packaging food for freezing, cover or wrap, label and date (production and freezing date) all foods.</li>
                <li>Freeze food in small quantities to ensure food is frozen quickly.</li>            
                <li>Do not overload freezer units and ensure air can circulate.</li>
                <li>Do not freeze foods that have been cooked then refrigerated and reheated.</li>
              </ul>
            </div>
          </div>
        </div>
      </div>
    </div>

最佳答案

请检查 jsfiddle,如果您正在寻找类似的东西,请告诉我。 https://jsfiddle.net/314sybno/2/

$(".box").on("click", function() {
    var id = $(this).attr("data-id");
    if( id === 'divId1') {
        $('div[data-id="divId2"]').addClass('closed').removeClass('open');
    } else {
        $('div[data-id="divId1"]').addClass('closed').removeClass('open');
    }

    // need to make this function select the other div.
    if ($(this).hasClass("closed")) {
        $(this).addClass("open").removeClass("closed");
    } else {
        $(this).addClass("closed").removeClass("open");
    }
    $(".hideDivs").hide();
    $("#" + id).show();  
});

关于javascript - 尝试让 jQuery 在单击时更改不同的 img src,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44896662/

相关文章:

javascript - ReactJS遇到 "Target container is not a DOM element",尝试了很多解决方案但没有成功

javascript - 获取元素的offsetHeight

javascript - 如何将 JSON 结构转换为数组的数组?

jquery - 如何像对象一样操作Json响应?

javascript - Angular JS 中不显示文本

javascript - Materialise Carousel with Images 消失

javascript - 如何使用带有数组的脚本将公式拖到 Google 电子表格中的右侧?

jquery - elasticsearch ajax调用错误

jquery - 什么是 jQuery Mobile?它能够为 Android 创建游戏吗?

javascript - 无法检查下拉菜单是否包含一些使用 Selenium 的文本