【问题标题】:jQuery ajax callback functionjQuery ajax 回调函数
【发布时间】:2010-11-10 19:22:44
【问题描述】:

是否有将额外的参数传递给 AJAX 调用的匿名回调函数?

我需要将 ID 或元素本身传递给回调函数以正确显示返回的数据。

我的 jQuery sn-p 如下:

$("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)
                });
            });

似乎“var cell”行丢失了最初的 A 标签。所以“单元格”最终是未定义的。

我的 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 调用和返回的数据。

【问题讨论】:

    标签: jquery


    【解决方案1】:

    它应该可以工作,因为您正在创建一个可以访问row 的闭包。但是您检索 td 元素的代码是错误的:

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

    这意味着tdtr兄弟,但它不是!是个孩子:

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

    【讨论】:

      【解决方案2】:

      我认为问题在于回调函数内部不存在var row。 既然你从行变量中定义了cell变量?

      你应该在回调函数中定义var row

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-05-03
        • 1970-01-01
        • 2013-01-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-08-13
        • 1970-01-01
        相关资源
        最近更新 更多