slideUp 和 slideDown jQuery
Posted
技术标签:
【中文标题】slideUp 和 slideDown jQuery【英文标题】:slideUp and slideDown jQuery 【发布时间】:2017-03-17 04:36:39 【问题描述】:我有一个表,我可以在其中单击类 .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>
【问题讨论】:
代码看起来不错。您确定您的页面中还有其他 js 错误吗?检查您的浏览器控制台 控制台没有错误,这段代码是我脚本中唯一的。 你是说上滑连不上? 好吧,使用我发布的第二段代码时,什么都没有发生。当我有第一段代码时它就起作用了.. 刚刚将您的代码复制并粘贴到本地页面,对我来说效果很好 【参考方案1】:我在您的代码中看到的一个问题是,您正在使用$(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');
);
);
);
);
【讨论】:
谢谢。我以为会是这样的。可以通过以任何方式使用“父母”来完成吗?但是我确实认为这是最干净的解决方案 您可以使用 parent 方法,但如果您在代码之间引入另一个 DOM 元素,代码将会中断。所以我认为读取和存储到局部变量是一个好主意。或者您可以在调用 slideUp 之前从 $(this) 读取 url 和 id 值,存储在本地变量中并使用它。以上是关于slideUp 和 slideDown jQuery的主要内容,如果未能解决你的问题,请参考以下文章
jQuery:下拉导航 slideDown 和 slideUp
jQuery slideUp 和 slideDown 正在提供弹跳效果
使用 slideUp 和 slideDown 切换 jQueryUI 选项卡
在标题中的 minicart 上为 slideDown() 和 slideUp() 设置动画
如何将“slideup()”和“slidedown()”函数应用于可折叠的 Jquery Mobile 1.4.5?小提琴手