2011-11-10 106 views
0

我有一個選擇與我的服務器和我加載選定的服務器上的信息,無需重新加載頁面。我正在使用ajax和ReplaceWith()。幾次替換div的內容

我試過使用live()來替換信息幾次,但它只能工作一次,爲什麼?

<script> 
    $(function(){ 
     $('select').live('change', function(){ 
      $.ajax({ 
       type: "POST", 
       url: "server.php", 
       data: "hostname=" + $(this).val(), 
       success: function(data){ 
        $("#results").replaceWith(data); 
       } 
      }) 
     }); 
    }); 
</script> 
+0

你的replaceWith調用中的數據究竟是什麼? –

+0

html。我找到了解決方案:html()放置ReplaceWith(),它的工作原理。 –

回答

2

這是因爲你用替換了 #results容器中的數據。下一次$(「#results」)選擇器不匹配任何元素(因爲容器已被前面的調用所取代)。

.html()不替換容器,但更新容器的內容。

0

live()方法是一種不推薦使用,可能工作不正常。嘗試()而不是。

+0

這只是如果他使用jQuery 1.7 – 2011-11-10 09:29:55

+0

我jQuery 1.6.4 –

+0

我會嘗試做同樣的$(document).ready() – Gfox

1

我真的不明白爲什麼它與html(),而不是與ReplaceWith(),但它的作品!

<script> 
    $(function(){ 
     $('select').live('change', function(){ 
      $.ajax({ 
       type: "POST", 
       url: "serveur.php", 
       data: "hostname=" + $(this).val(), 
       success: function(data){ 
        $("#results").html(data); 
       } 
      }) 
     }); 
    }); 
</script> 

對不起回答我自己的問題。

+3

因爲html()替換元素的內容,而replaceWith()替換實際的元素,所以可能你替換了元素,第二次它不存在了。 – 2011-11-10 09:42:52