2011-11-30 94 views
1

我正在學習如何使用jQuery進行AJAX調用的方法,目前我想知道的是我如何使用$.ajax函數來返回某個元素的內容。我意識到這可以使用​​很容易完成,但想用.ajax()得到結果。目前,我正在獲取單擊的href屬性並返回整個頁面數據,當我想返回頁面的內容時,該頁面的內容是#container

示例代碼中使用了:

jQuery(document).ready(function() { 
    /* Ajax load in portfolio pages */ 
    var ajaxLoader = $('#ajax-loader'); 
    var folioContainer = $('#folio-container'); 

    ajaxLoader.hide(); 

    $('div.wp-pagenavi a', 'div#content').click(function(e) { 

     $.ajax({ 
      url : this.href, 
      method : 'get', 
      success : function(data){ 
       folioContainer.html(data); 
      } 
     }); 

     e.preventDefault(); 

    }); 

}); 
+2

人爲什麼這樣做:'VAR HREF = $ (本).attr( 'href' 屬性); '當var href = this.href'更緊湊更快時? jQuery應該用於更好的事情,而不是更糟糕的事情。或者,更好的做法是用'url:this.href'替換'url:href'並跳過中間變量。 – jfriend00

+0

剛剛學習的朋友:) – styler

回答

1

你應該能夠.filter()來自服務器的響應只選擇數據你想要的:

 success : function(data){ 
      folioContainer.html($(data).filter('#container')); 
     } 

下面是該解決方案的的jsfiddle:http://jsfiddle.net/jasper/5HSzB/

下面是您的代碼的優化版本:

jQuery(function($) { 
    /* Ajax load in portfolio pages */ 
    var ajaxLoader = $('#ajax-loader').hide(); 

    $('.wp-pagenavi', '#content').find('a').click(function(e) {  

     $.ajax({ 
      url  : this.href, 
      method : 'get', 
      success : function(data){ 
       $('#folio-container').html($(data).filter('#container')); 
      } 
     }); 

     e.preventDefault(); 

    }); 

}); 
+0

真棒賈斯珀,謝謝加載! – styler

1

你可能會更好使用load方法http://api.jquery.com/load/,閱讀節 「加載頁面片段」

不知道,但嘗試:

jQuery(document).ready(function() { 
    /* Ajax load in portfolio pages */ 
    $('#ajax-loader').hide(); 

    $('div.wp-pagenavi a', 'div#content').click(function(e) { 
     $.load(this.href + ' #folio-container'); 
     e.preventDefault(); 
    }); 
});