如何在使用Jquery执行指定操作之后执行默认链接操作?
我有一个通过CSS定位隐藏/显示的“滑出”div,并使用jquery切换设置div隐藏/显示状态的类 一切都很好。我现在要做的是让页面上的任何链接再往上一点,更改类以显示div,然后跳转到页面上 以下是我所拥有的:如何在使用Jquery执行指定操作之后执行默认链接操作?,jquery,Jquery,我有一个通过CSS定位隐藏/显示的“滑出”div,并使用jquery切换设置div隐藏/显示状态的类 一切都很好。我现在要做的是让页面上的任何链接再往上一点,更改类以显示div,然后跳转到页面上 以下是我所拥有的: $('a[href="#request-trial"]').click(function () { $("#request-trial").toggleClass("on off"); }); 问题是它首先跳转到锚,然后改变类,所以它在“关闭”而不是“打开”时
$('a[href="#request-trial"]').click(function () {
$("#request-trial").toggleClass("on off");
});
问题是它首先跳转到锚,然后改变类,所以它在“关闭”而不是“打开”时跳转到div的位置-这有意义吗?有人有什么建议吗
添加一些额外信息: HTML: 试试这个: 这是我的密码
$('a[href="#request-trial"]').click(function(evt) {
evt.preventDefault();
var target = $("#request-trial");
target.toggleClass("on off");
if (target.length > 0 && target.hasClass("on"))
{
$("html, body").animate({
scrollTop: target.offset().top - $(window).height()
}, 500);
}
});
该类可能会提前更改,但幻灯片动画需要非零的时间才能完成。请发布您的HTML,以便尝试解决此问题。您可能是对的-有什么方法可以延迟吗?@user1851361我想我的答案就是您想要的:对此有另一个想法-可能是因为它是从底部定位的吗?也许它跳到了跳水池的底部?而不是.off位置?这跳到了原始的.off位置-与我的原始代码相同谢谢,但仍然不起作用-它一定与定位有关-我尝试在你的JSFIDLE中设置了#request试用,但它停止了工作,在我的网站上也得到了相同的结果。抱歉,但这不是你想要的:如果没有,你真的应该更具体地说明你的问题,我无法理解,所以如果
#请求试用
让类“开-关”
,那么你想跳转到这个#请求试用
,或者我错过了什么?啊-好吧,我知道发生了什么-我真的希望它跳转到类是“开”的情况下-在你的代码中改变了这一点,但它仍然跳到我的div的底部而不是顶部。这可能是因为它是从底部定位的吗?
<a href="#request-trial">Sign up</a>
.form-popup,
.form-popup.on {
position: absolute;
height: 500px;
z-index: 0;
bottom: 0px;
opacity: 1;
}
.form-popup.off {
bottom: -580px;
opacity: 0;
}
var documentBody = (($.browser.chrome)||($.browser.safari)) ? document.body : document.documentElement;
$('a[href="#request-trial"]').click(function (e) {
e.preventDefault();
var $targetElem = $("#request-trial")
$targetElem.toggleClass("on off");
if($targetElem.is('.on'))
$(documentBody).animate({scrollTop: $targetElem.offset().top}, 50);
});
$('a[href="#request-trial"]').click(function(evt) {
evt.preventDefault();
var target = $("#request-trial");
target.toggleClass("on off");
if (target.length > 0 && target.hasClass("on"))
{
$("html, body").animate({
scrollTop: target.offset().top - $(window).height()
}, 500);
}
});