2011-09-24 149 views
1

考慮下面的代碼:AJAX攔截JavaScript

<script src="js/backgroundChanger.js" type="text/javascript"></script> 
    <script> 
      $(document).ready(function() { 
       $('.Themes').click(function(){ 
        $('#dcontent').load('printThumbs.php'); 
       }); 
      }); 
     </script> 

第一個腳本爲背景改變邏輯和第二腳本給主題的縮略圖列表。問題在於第一個腳本因爲第二個腳本不起作用。如果我不使用這種AJAX技術,一切正常。工作代碼:

<script src="js/backgroundChanger.js" type="text/javascript"></script> 
    <div id="dcontent"> 
        <?php include('printThumbs.php'); printThemesThumbs();?> 
       </div> 

背景變化的邏輯是這樣的:

$(function() { 
     $('.themes li a img').click(function() {//code 
}); 

任何幫助將不勝感激。

+5

覆蓋它你將很難得到幫助,如果你不發佈第一個劇本的內容,因爲很難說什麼當你只有一面時就會發生衝突。 –

回答

0

在你.Theme,並在代碼.theme的第三片段定義的點擊功能代碼的第一個片段,這是正確的?我的意思是這兩類似乎是不同的請儘量採用相同的類名返回你的php function

+0

這些是不同的類 – George

0

您必須在回調函數中添加第二個代碼。如果它不在DOM中,你就不能綁定它。如果你想更改printThumbs輸出你需要添加一個回調...

,如果你想要做一些jQuery的或其他客戶端的東西在一個Ajax調用的respons(HTML,XML
<script> 
      $(document).ready(function() {//this is also a callback function when document is ready 
       $('.Themes').click(function(){//this can be understand as a call back too... code is fired after a click 
        $('#dcontent').load('printThumbs.php',function(){/*your callback code here...this code will be fired after you've loaded printThumbs*/} 
       }); 
      }); 
     </script> 

, JSON或其他),你必須指定一個回調函數。爲了減少事情的複雜性,您必須像在文檔就緒函數中一樣查看回調函數,區別在於回調函數應用於ajax調用的響應。如果代碼不在回調函數中,則不能處理響應,因爲它沒有被注入dom /當文檔準備就緒時,它根本不存在於瀏覽器中。

0

您打給$(document).ready()兩次,因爲$()是別名,第二個定義是覆蓋第一個。首先,你在文檔準備回調設置爲

function() { 
    $('.themes li a img').click(function() {//code 
} 

,然後用

function() { 
    $('.Themes').click(function(){ 
     $('#dcontent').load('printThumbs.php'); 
    }); 
}