slideUp 和 slideDown jQuery
slideUp and slideDown jQuery
我有一个 table,我可以在其中单击带有 class .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');
});
});
但是,这会阻止代码运行。有人知道如何解决这个问题吗?
谢谢。
编辑:
我的 table 行如下所示:
<tr class="details" data-id="@item.VehicleID" data-url="@Url.Action("Details", "Vehicle")">
</tr>
我的 div 看起来如下:
<div id="details"></div>
我在您的代码中看到的一个问题是,您正在使用 $(this).data('url')
将 url 数据属性值设置为被单击的 tr。但 $(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');
});
});
});
});
我有一个 table,我可以在其中单击带有 class .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');
});
});
但是,这会阻止代码运行。有人知道如何解决这个问题吗?
谢谢。
编辑:
我的 table 行如下所示:
<tr class="details" data-id="@item.VehicleID" data-url="@Url.Action("Details", "Vehicle")">
</tr>
我的 div 看起来如下:
<div id="details"></div>
我在您的代码中看到的一个问题是,您正在使用 $(this).data('url')
将 url 数据属性值设置为被单击的 tr。但 $(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');
});
});
});
});