2011-01-28 92 views
2

我的下面的代碼工作正常。這個jQuery代碼有什麼問題?

$(document).ready(function() { 
     $('a.address').click(function() { 
      $('#box').slideDown("slow"); 

      $.ajax({ 
      type: "POST", 
       url: "details.php", 
       success: function(html){    
       $("#msg").html(html); 
       } 
      }); 

     }); 
    }); 

但以下情況不(僅1線成功:)內改變,它加載什麼..只有slidesdown的#box和#msg內,但不加載#address。

$(document).ready(function() { 
     $('a.address').click(function() { 
      $('#box').slideDown("slow"); 

      $.ajax({ 
      type: "POST", 
       url: "details.php", 
       success: function(html){ 
       $("#msg").html($(html).find('#address').html()); 
       } 
      }); 

     }); 
    }); 

The details.php is: 


<div id="info">some text.</div> 
    <div id="address">The address</div> 

回答

8

當你寫$(html),你要創建它擁有兩個<div>元素一個jQuery對象。

關於此對象的調用.find(...)搜索<div>元素的後代
既然這兩個元素都沒有任何子元素,我將永遠找不到任何東西。

取而代之,您可以調用.filter()來搜索集合中的元素(但不是它們的後代)。

或者,您可以將返回的HTML包裝在新的<div>標記中,然後致電.find()。由於您的元素將是包裝<div>的子元件,因此可通過.find()找到它們。
.filter()不同,如果將服務器更改爲返回您正在尋找的孩子的<div>,則此功能仍然有效。

+0

+1 jQuery很迷人 – TheVillageIdiot 2011-01-28 17:20:57

1

jQuerys​​help方法可加載&插入頁面片段

$('a.address').click(function() { 
    $('#box').slideDown("slow"); 

    $('#msg').load('details.php #address'); 
}); 

這可能是你想要在這裏實現什麼。