2010-01-27 64 views
2

我需要加載一些ajax內容後的字段與類地址。使用下面的代碼將用ajax內容替換.address的內容。jQuery,如何加載指定元素後的ajax內容

$('.accordion .head').click(function() { 
    $(this).next().find('.address').after().load('http://test.dev/search/view/IdDaytrip/' + $(this).attr('id') + '.html'); 
    $(this).next().toggle('slow'); 
    return false; 
}).next().hide(); 

<div style="display: none;"> 
<fieldset class="address"> 
<!-- AJAx CONTENT GOES HERE --> 
    <ol> 
     <li>Stadhouderskade 78</li> 
     <li> Amsterdam-Zuid</li> 
     <li>020-5239666</li> 
    </ol> 
</fieldset> 
<!-- BUT THE AJAx CONTENT NEEDS TO GO HERE --> 
<span class="tags">Tags: museum</span> 
</div> 

回答

4

我通常做的是這樣的:

var clicked = $(this); 
$.get('http://test.dev/search/view/IdDaytrip/' + $(this).attr('id') + '.html', 
function(data){ 
    alert("Data Loaded: " + data); 
    $(clicked).next().find('.address').after(data); 
}); 
+0

你的第一個例子是行不通的,因爲負載是一個異步功能,所以不能把結果返回給一個變量.. – 2010-01-27 11:58:39

+0

感謝加比,第一個例子刪除 – rsilva4 2010-01-27 12:00:59

0

這應該工作..

$('.accordion .head').click(function() { 
    $next = $(this).next(); 
    $.get('http://test.dev/search/view/IdDaytrip/' + $(this).attr('id') + '.html', 
      function(data){ 
         $next.find('address').after(data); 
         } 
     ).end().toggle('slow'); 
    return false; 
}).next().hide() 
0

其實after需要的對象後,定元素追加。當你調用

$(this).nex().find('addresss').after() 

將返回的參考:

'address' + [content appended by `after`] 

,因爲我們沒有給什麼after功能追加到地址所以我們還是呼籲$('.address')load

改爲使用此腳本:

$('.accordion .head').click(function() { 
    $(this).next().find('.address').after($("div/>") 
    .load('http://test.dev/search/view/IdDaytrip/' + 
     $(this).attr('id') + '.html')); 
    $(this).next().toggle('slow'); 
    return false; 
}).next().hide(); 

這創造了新的div包裹Ajax內容,並顯示在正確的道路。