这个jQuery代码有什么问题?

问题描述:

我的下面的代码工作正常。这个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> 

当你写$(html),你要创建它拥有两个<div>元素一个jQuery对象。

关于此对象的调用.find(...)搜索<div>元素的后代
既然这两个元素都没有任何子元素,我将永远找不到任何东西。

取而代之,您可以调用.filter()来搜索集合中的元素(但不是它们的后代)。

或者,您可以将返回的HTML包装在新的<div>标记中,然后致电.find()。由于您的元素将是包装<div>的子元件,因此可通过.find()找到它们。
.filter()不同,如果将服务器更改为返回您正在寻找的孩子的<div>,则此功能仍然有效。

+0

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

jQuerys​​help方法可加载&插入页面片段

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

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

这可能是你想要在这里实现什么。