2010-11-10 150 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