JavaScript 画廊通过点击导航菜单触发

JavaScript gallery gets triggered by click on navigation menu

我在相同的网页。

这样做之后,当点击导航菜单中的 link 时,它会向下滚动到页面的相关部分。它会按应有的方式滚动,但出于某种原因,它还会打开 PhotoSwipe 画廊。

点击菜单 link 应该只会滚动到相关区域,不会触发 PhotoSwipe 图库。

我使用了 FixedNav 和 PhotoSwipe 的所有默认设置,并将它们放在一个页面上以说明问题:

https://jsfiddle.net/5pw1rem9/

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>Adtile Fixed Nav</title>
    <meta name="author" content="Adtile">
    <meta name="viewport" content="width=device-width,initial-scale=1">
    <link rel="stylesheet" href="css/styles.css">

    <title>CodePen - PhotoSwipe Demo</title>
    <link rel='stylesheet' href='https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css'>
    <link rel='stylesheet' href='https://cdnjs.cloudflare.com/ajax/libs/photoswipe/4.1.0/photoswipe.css'>
    <link rel='stylesheet' href='https://cdnjs.cloudflare.com/ajax/libs/photoswipe/4.1.0/default-skin/default-skin.css'>
    <link rel='stylesheet' href='https://fonts.googleapis.com/css?family=Bitter:400,700,400italic'>
    <link rel="stylesheet" href="./style.css">


    <!--[if lt IE 9]>
      <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
      <link rel="stylesheet" href="css/ie.css">
    <![endif]-->
    <script src="js/responsive-nav.js"></script>
  </head>
  <body>

    <header>
      <a href="#home" class="logo" data-scroll>Fixed Nav</a>
      <nav class="nav-collapse">
        <ul>
          <li class="menu-item active"><a href="#home" data-scroll>Home</a></li>
          <li class="menu-item"><a href="#about" data-scroll>About</a></li>
          <li class="menu-item"><a href="#projects" data-scroll>Projects</a></li>
          <li class="menu-item"><a href="#blog" data-scroll>Blog</a></li>
          <li class="menu-item"><a href="http://www.google.com" target="_blank">Google</a></li>
        </ul>
      </nav>
    </header>

    <section id="home">
      <h1>Fixed Nav</h1>

<!-- partial:index.partial.html -->
<div class="container">
  <div class="row">
    <div class="col-sm-8 col-sm-offset-2">

      <h1 class="text-center">
          <small><em>..and a PhotoSwipe Demo</em></small>
        </h1>

      <!-- Galley wrapper that contains all items -->
      <div id="gallery" class="gallery" itemscope itemtype="http://schema.org/ImageGallery">

        <!-- Use figure for a more semantic html -->
        <figure itemprop="associatedMedia" itemscope itemtype="http://schema.org/ImageObject">
          <!-- Link to the big image, not mandatory, but usefull when there is no JS -->
          <a href="https://unsplash.it/1200/900/?image=702" data-caption="Sea side, south shore<br><em class='text-muted'>© Dominik Schröder</em>" data-width="1200" data-height="900" itemprop="contentUrl">
            <!-- Thumbnail -->
            <img src="https://unsplash.it/400/300/?image=702" itemprop="thumbnail" alt="Image description">
          </a>
        </figure>

在您的函数中,您有一个针对 'a' 的点击事件,其中 a 不仅仅是图库链接;单击功能也会影响您的菜单链接。这就是导致您出现问题的原因。

要解决此问题,您需要更具体地定义要受单击事件影响的链接。在你的情况下,你所要做的就是在 a 之前插入 div id“#gallery”,因为你的图库 div 中的所有链接都是图像,如下所示:

$('#gallery a').click(function(event) {  
   //etc..

查看(略有更新)fiddle

但是,如果图库 div 中还有其他链接(图片除外),这将不是一个理想的解决方案,因此您还应该考虑使用 class 来标识您的图库图像组,并使用 class 代替。

希望对您有所帮助