2012-03-23 184 views
1

#####求解##### 我有一个javaScript刷新setInterval(“...”,1000);在导致错误的源代码中。非常感谢你的帮助!jQuery .load()函数只被调用一次

的HTML

<div class="stackwrapper" id="user1"></div> 
<div class="stackwrapper" id="user2"></div> 
<div class="userdrawings"></div> 

的JavaScript

$('.stackwrapper').click(function(e){ 
var id=$(this).attr('id'); 
$('.userdrawings').load('loadSession.php?user='+id).fadeIn("slow"); 
}); 

不知怎的,它只能一次,只在上stackwrapper第一次点击,当我点击第二个,则不会触发功能再次。

+0

你在控制台收到一条错误消息? – m90 2012-03-23 11:07:10

+0

它看起来有其他东西发射错误。响应是否包含失败的JavaScript代码('load()'默认执行包含JavaScript)? – acme 2012-03-23 11:39:07

+1

如果您找到了自己的解决方案,您应该将其作为答案发布,然后接受它,以便其他人可以更轻松地找到答案。 – Gaffi 2012-08-14 20:51:50

回答

0

试图把它里面

$(document).ready(function(){ 
//place the above code here. 
}); 
+1

如果它不是文件准备就不会运行一次。 – defau1t 2012-03-23 11:13:59

+0

谢谢,我已经做到了。正如我所说的那样一次! – 2012-03-23 11:29:17

0

不能与此自足例如

<?php 
if (isset($_GET['user'])) { 
    echo '<span>user=', htmlspecialchars($_GET['user']), '</span>'; 
    die; 
} 
?> 
<html> 
    <head> 
     <title>...</title> 
     <style type="text/css"> 
      .stackwrapper { width:100px; height: 100px; margin: 5px; background-color: red } 
     </style> 
     <script type="text/javascript" src="http://code.jquery.com/jquery-1.7.2.min.js"></script> 
     <script type="text/javascript"> 
      $(document).ready(function() { 
       $('.stackwrapper').click(function(e) { 
        var id=$(this).attr('id'); 
        $('.userdrawings').load('?user='+id).fadeIn("slow"); 
       }); 
      }); 
     </script> 
    </head> 
    <body> 
     <div class="stackwrapper" id="user1"></div> 
     <div class="stackwrapper" id="user2"></div> 
     <div class="userdrawings"></div> 
    </body> 
</html> 

你可能想使用JavaScript调试器,例如像重现问题包含在firebug中并检查错误。

+0

非常感谢,发现错误! – 2012-03-23 11:37:03

1

好吧,现在我明白了,这是因为你正在进行ajax调用。这里的a link回答你的问题。

+0

但是这并不是说这里发生的事情,因为绑定的元素并没有改变:'当你调用$('a')时,它会在被调用时返回页面上的所有链接,而.click(fn )只会将您的处理程序添加到这些元素。当添加新链接时,它们不受影响。请参阅AJAX和活动教程以进行更长时间的讨论。# – m90 2012-03-23 11:32:52

+0

只有2个“堆栈包”类?我有一个解决方案。在.load之后你调用一个函数。 function2()..并且你创建了你放入相同代码的函数。 $('。stackwrapper')。click(function(e){ var id = $(this).attr('id'); $('。userdrawings')。load('loadSession.php?user =' + id).fadeIn(“slow”); }); – 2012-03-23 11:35:28

+0

FAQ的内容是,当你通过AJAX加载内容时,新创建的元素将不会自动绑定到在$(document)上声明的事件处理函数。准备()' - 这不是在这里似乎出了问题 – m90 2012-03-23 11:37:16

0

你可以尝试把它在文档级别:

$(document).on('click', '.stackwrapper', function(e) { 
    var id = $(this).attr('id'); 
    $('.userdrawings').load('loadSession.php?user=' + id).fadeIn("slow"); 
}); 
0

很奇怪,虽然它运作良好,我的电脑上。每次点击时它都会改变。 这是我的代码

HTML

<div class="stackwapper" id="user1">user1</div> 
<div class="stackwapper" id="user2">user2</div> 
<div class="userdrawings"></div> 

JS

$(document).ready(function(){ 
$(".stackwapper").click(function(e) { 
     var id = $(this).attr('id'); 
     $(".userdrawings").load("user_session.php?user="+id).fadeIn("slow"); 
    }); 
}); 

user_session.php

$user=$_GET["user"]; 
echo "hello " . $user;