javascript - SlideUp 和 SlideDown jQuery

标签 javascript jquery asp.net-mvc jquery-animate jquery-load

我有一个表,可以在其中单击带有 .details 类的行 ()。这将显示一个 id="details" 的 div,其中包含有关行中元素的额外信息。

我有以下代码。

$('.details').click(function () {
    $('#details').slideUp('slow');
    $('#details').load($(this).data('url'), { id: $(this).data('id') }, function () {
        $(this).slideDown('slow');
    });
});

但是,我希望加载 (.load()) 在 .slideUp() 之后发生,因为加载是在元素滑动时开始的向上(看起来很奇怪)。我尝试通过以下方式将其添加为回调函数:

$('#details').slideUp('slow', function () {
    $('#details').load($(this).data('url'), { id: $(this).data('id') }, function () {
        $(this).slideDown('slow');
    });
});

但是这会阻止代码工作。有人知道如何解决这个问题吗?

谢谢。

编辑:

我的表格行如下所示:

<tr class="details" data-id="@item.VehicleID" data-url="@Url.Action("Details", "Vehicle")">
</tr>

我的 div 如下所示:

<div id="details"></div>

最佳答案

我在代码中看到的一个问题是,您正在使用 $(this).data('url') 来获取设置为单击的 tr 的 url 数据属性值。但 $(this) 实际上是那里的 $('#details') 因为您是在 $('#details')< 的 SlideUp 中访问它,没有 url 数据属性。所以你一定会收到错误

解决方案是将 $(this) (单击的行)分配给局部变量,并在其他回调函数中使用它。

这应该有效。

$(function () {


    $('.details').click(function () {
        var _this = $(this);

        $('#details').slideUp('slow', function () {
            $('#details').load(_this.data('url'), { id: _this.data('id') }, function () {
                $('#details').slideDown('slow');
            });
        });
    });

});

关于javascript - SlideUp 和 SlideDown jQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40404116/

相关文章:

javascript - 随机显示,但不重复直到结束不起作用

javascript - 页面中包含的脚本中带有 url.action 帮助程序的 ASP.NET MVC jQuery 自动完成

javascript - 这个字符串究竟是如何反转的?

jquery - 检查JQuery版本是否大于1.8.3?

javascript - 使用 JavaScript 在静态图像上绘制线条

c# - 如何在asp mvc中单击后退按钮重新请求页面

c# - 使用 ASP.NET Identity 创建默认用户帐户

javascript - 如何使用 lodash 通过给定键映射对象?

javascript - 从 IE11 到谷歌的 GET 不起作用

javascript - 在 for 循环 XMLHttpRequest 结束时执行回调