2012-07-16 60 views
1

我有一個網站使用AJAX加載不同的頁面。加載工作正常,但一旦它加載頁面內的任何jquery不起作用。當用戶點擊一個導航按鈕時,它應該加載一個div內的頁面。我最初創建了帶有HTML標籤的頁面,只在頁面內加載了一個特定的標籤,但是我從加載的頁面中刪除了html和body標籤,但仍然無法工作。Ajax加載頁面內的Jquery不起作用

這裏的HTML

 <!DOCTYPE HTML> 
    <html lang="en"> 
    <head> 
    <meta charset="UTF-8"> 
    <title>Santex Group</title> 
    <link href="_css/main_15.css" rel="stylesheet" type="text/css"> 
    <script type="text/javascript" src="http://use.typekit.com/dcn6whd.js"></script> 
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script> 
    <script type="text/javascript" src="js/jquery.js"></script> 
    <script src="js/jquery.scrollTo-min.js" type="text/javascript"></script> 
    <script src="js/jquery.localscroll-min.js" type="text/javascript"></script> 
    <script src="js/init.js" type="text/javascript"></script> 
    <script type="text/javascript" src="js/chili-1.7.pack.js"></script> 
    <script type="text/javascript" src="js/jquery.easing.js"></script> 
    <script type="text/javascript" src="js/jquery.dimensions.js"></script> 
    <script type="text/javascript" src="js/jquery.infinite_carousel.js"></script> 
    <script type="text/javascript">// <![CDATA[ 

     $(document).ready(function() 
      { 
       $('li#toServices').click(function() 
       { 
       $('#services').load('services.html #services-container'); 

       }); 
       $('ul#siteNav li#toServices').localScroll({ 
        target:'body', 
        axis:'x', 
        offset: {left: -140}, 
        queue:true //one axis at a time 
       }); 
      }); 

      $(document).ready(function() 
      { 
       $('li#toHow').click(function() 

       { 
       $('#how').load('how.html #how-container'); 

       }); 
       $('ul#siteNav li#toHow').localScroll({ 
        target:'body', 
        axis:'x', 
        offset: {left: -140}, 
        queue:true //one axis at a time 
       }); 
      }); 
      $(document).ready(function() 
      { 
       $('li#toWhy').click(function() 

       { 
       $('#why').load('why.html #why-container'); 

       }); 
       // Scroll the whole document 
       $('ul#siteNav li#toWhy').localScroll({ 
        target:'body', 
        axis:'x', 
        offset: {left: -140}, 
        queue:true //one axis at a time 
       }); 
      }); 
      $(document).ready(function() 
      { 

      $('li#toClients').live('click', function() 

       { 
       $('#clients').load('clients.html'); 
      }); 
       $('ul#siteNav li#toClients').localScroll({ 
        target:'body', 
        axis:'x', 
        offset: {left: -140}, 
        queue:true //one axis at a time 
       }); 
      }); 
      $(document).ready(function() 
      { 
       // Scroll the whole document 
       $('ul#siteNav li#toContact').localScroll({ 
        target:'body', 
        axis:'x', 
        offset: {left: 0}, 
        queue:true //one axis at a time 
       }); 
      }); 
      $(document).ready(function() 
      { 
       // Scroll the whole document 
       $('ul#siteNav li#toCareers').localScroll({ 
        target:'body', 
        axis:'x', 
        offset: {left: -150}, 
        queue:true //one axis at a time 
       }); 
      }); 
        $(document).ready(function() 
      { 
       // Scroll the whole document 
       $('ul#siteNav li#toExtra').localScroll({ 
        target:'body', 
        axis:'x', 
        offset: {left: -150}, 
        queue:true //one axis at a time 
       }); 
      }); 
    // ]]></script> 
    </head> 
    <body> 
    <header id="mainHeader"> 
     <div id="mainNav"> 
     <div id="logo"> 
     <a title="Home" href="#mainHeader"></a> 
     </div> 
     <div id="navWrapper"> 

     <ul id="phone-login"> 
      <li><a href="#">Call Us Toll Free (888) 622-7098</a></li> 
      <li><a href="#">CLIENT LOGIN</a></li> 

     </ul> 

     <ul id="siteNav"> 
       <li id="toServices"><a class="star" href="#services">Services</a></li> 
       <li id="toHow"><a href="#how">How</a></li> 
       <li id="toWhy"><a href="#why">Why</a></li> 
       <li id="toClients"><a href="#clients">Clients</a></li>  
       <li id="toContact"><a href="#contact">Contact</a></li> 
       <li id="toCareers"><a href="#careers">Careers</a></li> 

      </ul> 
     </div> 

     </div> 
    <div class="header-writeup"> 
      <hgroup> 
      <h1>Innovate. Create. Experience</h1> 
      <h2>We embrace technology to empower people.</h2> 
      <h3>We are driven by technology, focused on making better products and interfaces. We are a full-service Global digital company that emphasized the importance of emerging technoloy solution sfor all types of clients.</h3> 
      </hgroup> 
     </div> 
    </header> 

    <div id="wrapper"> 
     <section id="services" class="scrolling-content"> 

     </section> 
     <section id="how" class="scrolling-content"> </section> 
     <section id="why" class="scrolling-content"> </section> 
     <section id="clients" class="scrolling-content"> </section> 
    <section id="contact" class="scrolling-content"> 

    </section> 
    <section id="careers" class="scrolling-content"> 
     </section> 
    </div> 
    <footer id="pageFooter"> 
    </footer> 


    </body> 
    </html> 

這裏是我試圖加載具有jQuery的滾動條加載

<div id="clients-container"> 
     <h1 class="section-heading">Clients</h1> 
     <div class="section_container"> 

       <div class="infiniteCarousel"> 
        <div class="wrapper"> 
        <ul> 
         <li><img src="_images/clientlogos1.gif" height="146" width="950" alt="Clients and Relationships" /></li> 
         <li><img src="_images/clientlogos2.gif" height="146" width="950" alt="Clients and Relationships" /></li> 
        </ul> 
        </div> 
       </div> 

       <div class="view-our-work-link"> 
         <a class="button float-left" href="../content/our-work">View Our Work</a>  
       </div> 
     </div> 
    </div> 

這裏的時候不工作的一個頁面的網站直播:

http://ernestosillas.com/santexgroupAJAX/index16.html

+0

嘗試使用'live'而不是'click' – Norse 2012-07-16 19:21:48

回答

0

如果你不受限制那裏,加載jQuery 1.7.xx(只需在http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js中寫入1.7而不是1.3.2),並使用jQuery.on()作爲綁定,live()爲extreeemly slowdeprecated

+0

謝謝我將它更改爲Jquery 1.7並將其更改爲on(「click」...並且仍然沒有運氣 $(document).ready(function() { $( '#李toClients')上( 「點擊」,函數(){ $('#客戶)負載( 'clients.html'); }); $('UL #siteNav li#toClients')。localScroll({target:'body', axis:'x', offset:{left:-140}, queue:true //一次一個軸 }); }); – user1529811 2012-07-16 19:47:40

+0

you hav e將事件綁定到渲染時可用的對象,以便可以觸發它並通過event.target獲取目標對象(仔細閱讀文檔;))。所以簡而言之,寫$(document).on('click','li#toClients',function(){}); – Simon 2012-07-17 08:35:00

0

嘗試使用on而不是使用click我可以看到你正在使用jQuery

$('li#toServices').on('body','click',function(){ 

// your code 

}); 
+0

謝謝你,那也沒用。我想知道爲什麼通過AJAX加載的頁面不會自動工作,它需要以某種方式重新加載,以便加載的內容?看起來像它不使用頁面的JavaScript。它工作正常如果我只是將內容嵌入到頁面中 – user1529811 2012-07-16 19:57:53

1

我有一個類似的問題的一個新版本,這個工作對我來說:

  1. 確保腳本正在服務器上運行或​​功能不起作用

  2. 嘗試$(document).ready(function(),有時候這是問題

  3. 嘗試$.getScript功能,如果你想使用jQuery通過.load功能加載外部頁面上

  4. 最後用return(false)功能在jQuery腳本或腳本的末尾可能不會在歌劇,Chrome和Safari工作

  5. 從外部網頁刪除任何HTML,身體,頭部標籤等你嘗試加載

希望這可以幫助任何有類似問題的人,這應該會爲你節省很多研究成果。

1

使用委託方式來解決這個問題。

這是因爲您正在準備文件上綁定事件。你必須使用一個委託才能工作。就像。這是因爲您通過ajax加載的內容在加載時不在頁面上。所以沒有附加任何事件。

您的代碼應沿着此線一些:

$('body').on('click','#clients-container',function(){ 
alert("hello"); 
}); 

它不必爲身體,但文件後也不會加載準備的元素,它是#clients的父-container

你有

<div id="clients-container"> 
</div> 

使用容器的父母在主網頁使用委託方式。