2010-11-10 185 views
0

有沒有辦法將其他參數傳遞給AJAX調用的匿名回調函數?jQuery ajax回調函數

我需要將ID或元素本身傳遞給回調函數以正確顯示返回的數據。

我的jQuery的片段如下:

$("a.DetailsLink").click(function (e) { 
       e.preventDefault(); 
       var row = $(this).closest("tr"); // determin the TR where the A tag is located. 
       row.next("tr.details").toggle(); // Toggle the next TR (initially hidden) 
       $.get(this, function (data) { 
        var cell = row.next("tr.details").next("td"); // get the TD contained in next TR. 
        cell.empty(); // clear it 
        cell.html(data); // assign data (I am getting HTML back from the server) 
       }); 
      }); 

這似乎是「變種細胞」行失去跟蹤初始的標籤的。所以「細胞」結束了未定義。

我的HTML是大致如下:

... 
<tr> 
    <td></td> 
    <td><a href="..../details/123" class="DetailsLink">Details</a></td> 
</tr> 
<tr class="details"> 
    <td colspan="2">&nbsp;</td> <!-- Initially Hidden --> 
</tr> 
... 

任何指針什麼我做錯了或者是缺少將不勝感激。

後端是ASP.NET MVC2,但不認爲這對任何事情都有影響。 Firebug顯示正在進行的Ajax調用和正在返回的數據。

回答

1

它應該工作,因爲你正在創建一個可以訪問row的閉包。但是你的代碼檢索td元素是錯誤的:

var cell = row.next("tr.details").next("td"); 

這將意味着td兄弟的tr它是不是!這是一個孩子:

var cell = row.next("tr.details").children("td:first"); 
+0

就是這樣。謝謝 :-) – Nasir 2010-11-10 19:28:36

0

我認爲這個問題是var row不會在回調函數內部存在。 由於您從行變量中定義了cell變量?

您應該在回調函數中定義var row