2011-05-09 108 views
3

有兩個鏈接排序,SortName,SortDate。當使用jquery load來加載表($('table.listing').load ...)時,它就起作用了。當使用$('form')。load ...那麼它不起作用。這是爲什麼?jquery ajax加載鏈接的問題

下面的代碼有效,但如果將'table.listing'更改爲'form',則不起作用。問題是因爲鏈接也應該加載,並且它們位於表格上方的div中,所以我需要使用'form'或div,儘管div wrapper也不起作用。

這是什麼意思,它不工作:如果你使用'表單',你需要點擊鏈接TWICE容器加載!?

<form method="post"> 
<div> 
    <a href="" id="sortn">SortName</a><br/> 
    <a href="" id="sortd">SortDate</a> 
</div> 
<table class="listing"> 
    ...table code here 
</table> 
</form> 

<script type="text/javascript"> 
$(document).ready(function(){ 
    $('a#sortn').click(function(event) { 
     event.preventDefault(); 
     $('table.listing').load('index.php?sort=1 table.listing'); 
    }); 
    $('a#sortd').click(function(event) { 
     event.preventDefault(); 
     $('table.listing').load('index.php?sort=2 table.listing'); 
    }); 
}); 
</script> 
+1

這是不正確的:'$( 'table.listing')負載( 'index.php文件排序= 1個table.listing?')。 ;'我不確定你在做什麼 – Neal 2011-05-09 14:13:08

+0

我使用加載方法將頁面的一部分加載到本身。是?sort = 1問題? – Marko 2011-05-09 14:15:38

+0

爲什麼你在末尾有'table.listing'? – Neal 2011-05-09 14:17:47

回答

2

我不知道爲什麼加載表單不起作用,但我不會那樣做。你應該將你的表單封裝在一個div中,然後將所有內容加載到那裏。加載之後,您需要重新綁定您的點擊操作。什麼不關於包裝它在一個div?

編輯:重新綁定鏈接裝載完成後:

<script type="text/javascript"> 

    function doLoad(sort){ 
     //if you switch to the div method, obvously the selector needs to change 
     var selector = "table.listing"; 
     //var selector = "#newDivId"; 

     $(selector).load('index.php?sort='+sort+' '+selector, function(){ 
      doBindings(); 
     }); 
    } 

    function doBindings(){ 
     $('a#sortn').unbind('click'); 
     $('a#sortd').unbind('click'); 
     $('a#sortn').click(function(event) { 
      event.preventDefault(); 
      doLoad(1); 
     }); 
     $('a#sortd').click(function(event) { 
      event.preventDefault(); 
      doLoad(2); 
     }); 
    } 


$(document).ready(function(){ 
    doBindings(); 
}); 
</script> 
+0

也許 - 重新綁定鏈接。怎麼做? – Marko 2011-05-09 14:21:58

+0

我會更新我的答案 – 2011-05-09 14:24:24

+0

已更新。不知道這是否會解決它。爲什麼你需要重新加載鏈接?他們改變了嗎?如果沒有,你可能會考慮不加載它們。 – 2011-05-09 14:41:13

1

$ .load語法是:

$(<selector>).load(url, formData, function(response, status)); 

上面的選擇就是從URL加載的頁面將被渲染(在目標)。 formData和回調函數都是可選的。如果您需要將表單數據傳遞到您的後端應用程序,你可以使用:

$(<selector>).load(url,$("#formid").serialize()); 

我可能是錯的,但你正在使用的網址可能不正確(的index.php排序= 1個table.listing?) 。

最後一點:爲了加快頁面處理速度,使用id而不是類。在您的例子:

<table class="listing" id="data"> 
.... 

,並在Javascript:

$("#data").load(...) 
+0

偉大的建議,我會把他們......在這個問題上,它似乎是關於加載的鏈接,然後需要重新綁定 – Marko 2011-05-09 14:39:56