如何在使用Jquery执行指定操作之后执行默认链接操作?

如何在使用Jquery执行指定操作之后执行默认链接操作?,jquery,Jquery,我有一个通过CSS定位隐藏/显示的“滑出”div,并使用jquery切换设置div隐藏/显示状态的类 一切都很好。我现在要做的是让页面上的任何链接再往上一点,更改类以显示div,然后跳转到页面上 以下是我所拥有的: $('a[href="#request-trial"]').click(function () { $("#request-trial").toggleClass("on off"); }); 问题是它首先跳转到锚,然后改变类,所以它在“关闭”而不是“打开”时

我有一个通过CSS定位隐藏/显示的“滑出”div,并使用jquery切换设置div隐藏/显示状态的类

一切都很好。我现在要做的是让页面上的任何链接再往上一点,更改类以显示div,然后跳转到页面上

以下是我所拥有的:

$('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);
  } 
});