2012-04-21 98 views
0

基本上,我試着編碼以下內容。 (請注意,我在jQuery的新手,努力學習。)從ajax返回值的函數?

<html> 
<head> 
<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.2.min.js"></script> 

<style> 
    img.box:hover { opacity: 0.4; } 
</style> 

<script type="text/javascript"> 
jQuery(document).ready(function() 
{ 
    $(".box").click(function(event){ 
     $.post("./itemdrop.php", { id: "Item:1" }, function(data){ 
      $('#box').append(data); 
     } 
    ); 
    }); 

    $("li").click(function(event){ 
    $(".box").append("clicked"); 

    }) 
}); 
</script> 
</head> 

<body> 

<div id="box"> 
    <img class="box" src="./img/box.jpg" width="150" height="150"> 
</div> 

</body> 
</html> 

它應該是這樣的:在「盒子」形象

  1. 用戶點擊,jQuery的從itemdrop.php
  2. 得值

返回的值是<li class="item">Shield of Walmar</li>

然而,當我點擊S上的jQuery不採取行動沃爾瑪的領域。 (我不知何故有一種感覺,就是頂部的文檔就緒功能導致它。)

我該如何解決這個問題?

回答

2

您需要使用直播活動/代表。由於您使用的是最新的jQuery版本,你要使用.on()它:

$('#box').on('click', 'li', function(event){ 
    $("#box").append("clicked"); 
}); 

我也建議你jQuery(document).ready(function()jQuery(document).ready(function($)更換 - 否則$內該功能只適用,如果它是可用的全局(即$.noConflict沒有使用)。

+0

謝謝。解決了它。 :) – Aristona 2012-04-21 19:24:15

1

使用on()

$("#box").on('click', 'li', function(event){ 
    $(".box").append("clicked"); 
}) 

引用文檔:

委託事件有優勢,他們可以從被添加到文檔在以後的時間 後代元素處理事件。通過 挑選一個在連接了委託事件處理程序時保證存在的元素,可以將委派事件用於 ,從而避免需要經常附加和刪除事件處理程序。