2017-07-26 108 views
0

它在同一頁面上執行平滑頁面滾動到錨點。jQuery - 在同一頁面上執行平滑頁面滾動到錨點

jQuery的新手,並試圖理解此代碼。每次點擊前2個鏈接時如何調用jQuery函數?我相信當文檔被解析並準備就緒時,函數將會執行。但那時還沒有點擊鏈接。那麼點擊鏈接時如何執行呢?

<!DOCTYPE html> 
 
<html lang="en"> 
 
    <head>   
 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
 
     <title>Test</title>  
 

 
     <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> 
 
     
 
     <script> 
 
      // This is shorthand for $(document).ready(). It fires when the document has been parsed and is ready. 
 
      $(function() 
 
      { 
 
       // Select all links with hashes. 
 
       // Remove links that don't actually link to anything. 
 
       $('a[href*=#]:not([href=#])').click(function() 
 
       { 
 
       if (location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'') && location.hostname == this.hostname) 
 
       { 
 
        // Figure out the element to scroll to. 
 
        var target = $(this.hash); 
 
        target = target.length ? target : $('[name=' + this.hash.slice(1) +']'); 
 

 
        // Does a scroll target exist?    
 
        if (target.length) 
 
        { 
 
        $('html,body').animate({ 
 
         scrollTop: target.offset().top 
 
        }, 1000); 
 

 
        return false; 
 
        } 
 
       } 
 
       }); 
 
      });   
 
     </script>   
 
     
 
     <!-- Internal CSS style sheet. -->   
 
     <style type="text/css"> 
 
      body { 
 
       font: 14px/2 Georgia, serif; 
 
      } 
 

 
      #page-wrap { 
 
       max-width: 500px; 
 
       margin: 1rem auto; 
 
       padding: 1rem; 
 
      } 
 

 
      h1, h2 { 
 
       line-height: 1.2; 
 
      } 
 

 
      p, ul, h1 { 
 
       margin: 0 0 1rem 0; 
 
      } 
 
     </style>   
 
    </head> 
 
     
 
    <body>   
 
     <div id="page-wrap"> 
 

 
      <h1 id="top">Smooth Page Scrolling</h1> 
 

 
      <ul> 
 
      <li><a href="#two">Scroll to Section Two</a></li> 
 
      <li><a href="#three">Scroll to Section Three</a></li> 
 
      </ul> 
 

 
      <h2 id="one">Section One</h2> 
 

 
      <p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. 
 
      Mauris placerat eleifend leo. Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed, commodo vitae, ornare sit amet, wisi. Aenean fermentum, elit eget tincidunt condimentum, eros ipsum rutrum orci, sagittis tempus 
 
      lacus enim ac dui. Donec non enim in turpis pulvinar facilisis. Ut felis. Praesent dapibus, neque id cursus faucibus, tortor neque egestas augue, eu vulputate magna eros eu erat. Aliquam erat volutpat. Nam dui mi, tincidunt quis, accumsan porttitor, 
 
      facilisis luctus, metus</p> 
 

 
      <p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. 
 
      Mauris placerat eleifend leo. Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed, commodo vitae, ornare sit amet, wisi. Aenean fermentum, elit eget tincidunt condimentum, eros ipsum rutrum orci, sagittis tempus 
 
      lacus enim ac dui. Donec non enim in turpis pulvinar facilisis. Ut felis. Praesent dapibus, neque id cursus faucibus, tortor neque egestas augue, eu vulputate magna eros eu erat. Aliquam erat volutpat. Nam dui mi, tincidunt quis, accumsan porttitor, 
 
      facilisis luctus, metus</p> 
 

 
      <p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. 
 
      Mauris placerat eleifend leo. Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed, commodo vitae, ornare sit amet, wisi. Aenean fermentum, elit eget tincidunt condimentum, eros ipsum rutrum orci, sagittis tempus 
 
      lacus enim ac dui. Donec non enim in turpis pulvinar facilisis. Ut felis. Praesent dapibus, neque id cursus faucibus, tortor neque egestas augue, eu vulputate magna eros eu erat. Aliquam erat volutpat. Nam dui mi, tincidunt quis, accumsan porttitor, 
 
      facilisis luctus, metus</p> 
 

 
      <p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. 
 
      Mauris placerat eleifend leo. Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed, commodo vitae, ornare sit amet, wisi. Aenean fermentum, elit eget tincidunt condimentum, eros ipsum rutrum orci, sagittis tempus 
 
      lacus enim ac dui. Donec non enim in turpis pulvinar facilisis. Ut felis. Praesent dapibus, neque id cursus faucibus, tortor neque egestas augue, eu vulputate magna eros eu erat. Aliquam erat volutpat. Nam dui mi, tincidunt quis, accumsan porttitor, 
 
      facilisis luctus, metus</p> 
 

 
      <h2 id="two">Section Two</h2> 
 

 
      <p><a href="#top">Top</a></p> 
 

 
      <p>quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo. Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum 
 
      sed, commodo vitae, ornare sit amet, wisi. Aenean fermentum, elit eget tincidunt condimentum, eros ipsum rutrum orci, sagittis tempus lacus enim ac dui. Donec non enim in turpis pulvinar facilisis. Ut felis. Praesent dapibus, neque id cursus faucibus, 
 
      tortor neque egestas augue, eu vulputate magna eros eu erat. Aliquam erat volutpat. Nam dui mi, tincidunt quis, accumsan porttitor, facilisis luctus, metus</p> 
 

 
      <p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. 
 
      Mauris placerat eleifend leo. Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed, commodo vitae, ornare sit amet, wisi. Aenean fermentum, elit eget tincidunt condimentum, eros ipsum rutrum orci, sagittis tempus 
 
      lacus enim ac dui. Donec non enim in turpis pulvinar facilisis. Ut felis. Praesent dapibus, neque id cursus faucibus, tortor neque egestas augue, eu vulputate magna eros eu erat. Aliquam erat volutpat. Nam dui mi, tincidunt quis, accumsan porttitor, 
 
      facilisis luctus, metus</p> 
 

 
      <h2 id="three">Section Three</h2> 
 

 
      <p><a href="#top">Top</a></p> 
 

 
      <p>quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo. Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum 
 
      sed, commodo vitae, ornare sit amet, wisi. Aenean fermentum, elit eget tincidunt condimentum, eros ipsum rutrum orci, sagittis tempus lacus enim ac dui. Donec non enim in turpis pulvinar facilisis. Ut felis. Praesent dapibus, neque id cursus faucibus, 
 
      tortor neque egestas augue, eu vulputate magna eros eu erat. Aliquam erat volutpat. Nam dui mi, tincidunt quis, accumsan porttitor, facilisis luctus, metus</p> 
 

 
      <p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. 
 
      Mauris placerat eleifend leo. Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed, commodo vitae, ornare sit amet, wisi. Aenean fermentum, elit eget tincidunt condimentum, eros ipsum rutrum orci, sagittis tempus 
 
      lacus enim ac dui. Donec non enim in turpis pulvinar facilisis. Ut felis. Praesent dapibus, neque id cursus faucibus, tortor neque egestas augue, eu vulputate magna eros eu erat. Aliquam erat volutpat. Nam dui mi, tincidunt quis, accumsan porttitor, 
 
      facilisis luctus, metus</p> 
 

 
      <p>quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo. Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum 
 
      sed, commodo vitae, ornare sit amet, wisi. Aenean fermentum, elit eget tincidunt condimentum, eros ipsum rutrum orci, sagittis tempus lacus enim ac dui. Donec non enim in turpis pulvinar facilisis. Ut felis. Praesent dapibus, neque id cursus faucibus, 
 
      tortor neque egestas augue, eu vulputate magna eros eu erat. Aliquam erat volutpat. Nam dui mi, tincidunt quis, accumsan porttitor, facilisis luctus, metus</p> 
 

 
      <p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. 
 
      Mauris placerat eleifend leo. Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed, commodo vitae, ornare sit amet, wisi. Aenean fermentum, elit eget tincidunt condimentum, eros ipsum rutrum orci, sagittis tempus 
 
      lacus enim ac dui. Donec non enim in turpis pulvinar facilisis. Ut felis. Praesent dapibus, neque id cursus faucibus, tortor neque egestas augue, eu vulputate magna eros eu erat. Aliquam erat volutpat. Nam dui mi, tincidunt quis, accumsan porttitor, 
 
      facilisis luctus, metus</p> 
 

 
     </div> 
 
    </body>  
 
</html>

回答

0

jQuery的$(function()運行時的DOM(文檔對象模型)已加載。這意味着HTML文檔的組件已準備好將事件附加到它們。

$('a[href*=#]:not([href=#])').click(function()是一個等待點擊事件的事件偵聽器。

'a[href*=#]:not([href=#])'選擇指示jQuery來監聽任何錨點擊事件中有一個#(例如<a href="#two">),但不包括錨這只是一個#本身(例如<a href="#">)。

+0

好的,我知道該函數在DOM加載後運行。然後,我可以解釋該函數中發生的事情嗎?它會查找所有有效的鏈接並創建一個單獨的事件偵聽器 - 每個鏈接的此代碼的副本?因爲在初始加載後它不會回到代碼中?然後它使用這些單獨的聽衆(代碼坐在某處)1爲每個鏈接。 – user3020047

相關問題