2011-01-28 7 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行が成功:)内で変更されていませんしかし、それだけで#box slidesdown ...何をロードしないと、内部の#msgが、しかし#addressロードされません。あなたが$(html)を書くとき

$(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

、次の2つの<div>の要素を保持しているjQueryオブジェクトを作成しています。

このオブジェクトで.find(...)を呼び出すと、<div>要素の子孫が検索されます。
どちらの要素にも子要素がないので、何も見つかりません。

代わりに.filter()を呼び出して、セット内の要素を検索します(子孫は検索しません)。

また、返されたHTMLを新しい<div>タグにラップしてから、.find()を呼び出すことができます。あなたの要素はラッパー<div>の子であるため、.find()によって見つけられます。
.filter()とは異なり、子供が探している<div>を返すようにサーバーを変更すると、これは引き続き機能します。

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

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

あなたがここに実現したいものはおそらくです:

+0

+1 jQueryが魅力的です – TheVillageIdiot

1

jQuerys​​help方法は、あなたは、&挿入ページフラグメントをロードすることができます。

関連する問題