2012-05-30 67 views
0

我使用的Magento作爲我的CMS,努力實現對分頁阿賈克斯,問題與jQuery.ajax()進行分頁

我此刻的2頁,結構是這樣的,

<div class="pager"> 
     <div class="pages"> 
      <strong>Page:</strong> 
      <ol> 
      <li class="current">1</li> 
      <li> 
       <a href="http://localhost/Bakestore/index.php/tools.html?p=2" class="pageLinks">2</a></li> 
      <li class="pager_next_img"> 
       <a class="next i-next pageLinks" href="http://localhost/Bakestore/index.php/tools.html?p=2" title="Next"> 
       <img src="http://localhost/Bakestore/skin/frontend/default/Bakestore_Theme/images/pager_arrow_right.gif" alt="Next" class="v-middle"> 
       </a> 
      </li> 
      </ol> 
    </div> 
</div> 

我的jQuery Ajax代碼是如下,

$j(".pages li a").each(function(){ 
    $j(this).removeClass('pageLinks').addClass('pageLinks');         
}); 

$j(".pageLinks").click(function(e){ 
    e.preventDefault(); 
    var anchorSel = $j(this).attr('href'); 
    $j.ajax({ 
     type: "POST", 
     datatype: "HTML", 
     cache: true, 
     url: anchorSel, 

     success: function(data){ 
      var testdata = $j(data).find(".category-products"); 
      $j(".col-main .category-products").replaceWith(testdata); 
      }, 

     complete: function(data){ 
         $j(".pages li a").each(function(){ 
          $j(this).removeClass('pageLinks').addClass('pageLinks');       }); 
          alert($j(".col-main .category-products .toolbar > .pager").html()); 
         } 
}); 

它,當我點擊工作正常,但是,從第2頁當我點擊Page 1時,頁面會重新加載。現在,當我再次點擊Page 2時,它工作正常。

我調試了我的jQuery,不幸的是,事件$j(".pageLinks").click沒有被解僱(當我點擊Page 1)。

任何想法,我要去哪裏錯了?

回答

2

你的返回html包含分頁鏈接? 如果是這種情況,您需要將.click(function(){更改爲.live('click', function(){

單擊僅將現有元素綁定到該事件處理程序。除了尚未出現的元素之外,生活也是如此。

住的確不推薦使用。如果你使用1.7,我不認爲你是。你應該改變它

$(document).on('click', ".pageLinks", function(){ 

}); 
+0

好的,這是工作,你能解釋爲什麼這個工程?謝謝,接受答案然後:) –

+1

請注意['.live()'](http://api.jquery.com/live/)在jQuery 1.7+中已被棄用,但是如果它適用於您的版本,那就好了。 –

+1

您可以使用.on()作爲.live()的替代品在jQuery 1.7中引入。 – davidaam