javascript - 链接上的单击事件,但只有一个

标签 javascript jquery html

我的画廊页面刚刚发现了一个问题。 我有 JavaScript 来处理用户菜单选择,但其中一个选项是返回主页,但它不起作用,因为单击事件接管页面上的所有链接,有办法解决这个问题吗?我已经在网上搜索答案,但没有运气,谢谢。

$(document).ready(function() {
  LoadGallery($('a[data-albumid]:first').data('albumid'));
  $("a").click(function() {
    var dir_path = $(this).data("albumid");
    LoadGallery(dir_path);
    return false;
  });
});
<ul id="nav">
  <li><a href="#" id="here">Gallery</a>
    <ul>
      <li><a href="#" data-albumid="images/gallery/fld01/">2014</a></li>
      <li><a href="#" data-albumid="images/gallery/fld02/">2014</a></li>
      <li><a href="#" data-albumid="images/gallery/fld03/">2014</a></li>
      <li><a href="#" data-albumid="images/gallery/fld04/">2015</a></li>
      <li><a href="#" data-albumid="images/gallery/fld05/">2015</a></li>
    </ul>
  </li>
  <li><a href="index.html" id="home">Back to home</a></li>
  <!-- This one never works! -->
</ul>

最佳答案

您在所有链接上给出了return false,这使得您的其他“正常”链接不起作用。您可以执行 :not 运算符:

$(document).ready(function() {
  LoadGallery($('a[data-albumid]:first').data('albumid'));
  $("a:not(#home)").click(function() {
    var dir_path = $(this).data("albumid");
    LoadGallery(dir_path);
    return false;
  });
});

或者仅将事件绑定(bind)到href=#:

$(document).ready(function() {
  LoadGallery($('a[data-albumid]:first').data('albumid'));
  $('a[href="#"]').click(function() {
    var dir_path = $(this).data("albumid");
    LoadGallery(dir_path);
    return false;
  });
});

这样就不会影响其他链接。

关于javascript - 链接上的单击事件,但只有一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34442175/

相关文章:

javascript - 节流函数(受 lodash 启发)仅使用 React Hook (使用 Sandbox)来处理调整大小事件

jquery - 使用 JavaScript 提交 Rails 远程表单

javascript - HTML Canvas - 基于鼠标移动移动文本并显示后面的图层

html - 在 CSS 中选择每隔一个级别

javascript - Lodash:当我有嵌套对象时如何使用过滤器?

javascript - Bootstrap 选项卡面板没有删除事件类,但只是有时

javascript - 视频验证客户端如何获取视频时长

jquery - 页面上使用相同类的多个 Jquery 对话框

jquery - 防止 DIV 低于首屏

html - 表格中段落的边距有时会被忽略,有时不会。为什么?