2011-11-10 80 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