javascript - .click( swap ) 在给定特定 src 时停止工作?

标签 javascript jquery html css

我有一个下拉菜单,我希望用于显示下拉菜单的图像根据下拉菜单是打开还是关闭来切换...这很好用。但是,当单击页面的其余部分时,我希望图像返回到其原始 src (..images/image1.png)。这也可以正常工作,但是,单击页面后单击图像的 src 不会切换。我该如何解决?谢谢。

$(function() {

  function swap() {
    var mem = this.src;
    this.src = $(this).data('src');
    $(this).data('src', mem);
  }
  $('.dropbtn').click(swap);

});

window.onclick = function(event) {
  if (!event.target.matches('.dropbtn')) {

    var dropdowns = document.getElementsByClassName("dropdown-content");
    var i;
    for (i = 0; i < dropdowns.length; i++) {
      var openDropdown = dropdowns[i];
      if (openDropdown.classList.contains('show')) {
        openDropdown.classList.remove('show');
        $(".dropdown-content").slideToggle();
        $(".dropbtn").attr('src', '../images/image1.png');
      }
    }
  }
}
<div class="dropdown">
  <div id="infotoggler">
    <img onclick="myFunction()" src="../images/image1.png" data-src="../images/image2.png" class="dropbtn" />
  </div>
  <div id="myDropdown" class="dropdown-content">
    <a href="http://www.coopertimewell.com">Home</a>
    <a href="http://www.coopertimewell.com/portfolio">Portfolio</a>
    <a href="http://www.coopertimewell.com/contact">Contact</a>
    <a href="http://www.coopertimewell.com/downloads">Downloads</a>
  </div>
</div>

最佳答案

您在此处设置点击时的图像 src,而 swap 应该是这样做的,以这种方式设置它可能会覆盖其他 src,然后 src 和 data-src 将相同。

$(".dropbtn").attr('src', '../images/image1.png');

可能的解决方案是再次交换:

$(".dropdown-content").slideToggle();
var t = $(".dropbtn");
var mem = t.attr('src');
t.attr('src',t.data('src'));
t.data('src', mem);

关于javascript - .click( swap ) 在给定特定 src 时停止工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38135498/

相关文章:

javascript - 如何使用 fs.writeFile 从 fetch API 调用响应创建 .json 文件

javascript - 上传 Javascript 后获取图像宽度 [适用于 Firefox,但不适用于 chrome]

jquery - 进度完成时加载网站

html - 用 Accordion 对齐 Bootstrap

html - 如果需要动态高度,如何让表格自动滚动(y)?

javascript - 输入第一个数字,然后在计算器中输入运算符

javascript - 脚本无法在简单的 html 文件中运行

Javascript - 生成日期的最佳方式,例如 Jul 27, 2016 4 :53:18 PM

javascript - 如何在 AngularJS 中打印 JSON 对象的元素?

jquery - 在 jQuery 中使用 JS 方法