我有两个元素一个在另一个之上:
<form class="order-form"></form>
<a href="#" class="hide-details">Hide Details</a>
我正在使用jQuery slideToggle:
// Show/Hide Details
$("a.hide-details").click(function () {
$(".order-form").slideToggle(0);
});
我想在折叠表单后将文本“隐藏详细信息”更改为“显示详细信息”。当表单扩展时,我想再次将文本更改为“隐藏详细信息”。
有任何建议可以实现这一目标吗?
答案 0 :(得分:3)
只需更改锚点的文字:
// Show/Hide Details
$("a.hide-details").click(function () {
var $this = $(this);
$this.prev(".order-form").slideToggle(0, function() {
$this.text($(this).is(':visible') ? "Show details": "Hide details");
});
});
编辑 prev
获取上一个表单
答案 1 :(得分:2)
如果将函数传递给slideToggle
,它将在完成后执行。一旦发生这种情况,您可以检查它是否隐藏,然后显示相应的文本。
代码未经测试:)
// Show/Hide Details
$("a.hide-details").click(function () {
$(".order-form").slideToggle(0,function(){
if ($(this).is(":hidden")) $(".hide-details").html("Show Details");
else $(".hide-details").html("Hide Details");
});
});
P.S。如果您只想切换没有动画.toggle()
的元素的可见性,那将会有效。
答案 2 :(得分:1)
$("a.hide-details").click(function () {
var txt=$(this).text();
(txt == 'Hide Details') ? txt='Show details':txt='Hide Details';
$(".order-form").slideToggle(400,function(){
$("a.hide-details").text(txt);
});
});