2011-09-24 145 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'); 
    }); 
}