2012-03-23 178 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;