切换两个div和类

时间:2010-04-15 12:14:09

标签: jquery toggle visibility

我有两个与其目标表单ID相关的类(login-form和register-form)的链接,他们想要切换。我还有一个预定义的'slideToggle'功能可以更好地切换。

这是我到目前为止所尝试的:

$('#userbar a').click(function() {
      var c = $(this).attr('class');
      $('#userbar a').removeClass('active');
      $(this).toggleClass('active');
      $('#register-form,#login-form').hide(); //bad, causing flashy
      $('#' + c).slideToggle('slow');

        return false;
    });

有了这个,我遇到了华而不实的窗口,并且在单击另一个链接时正确切换活动类,另一个链接不应再有活动类。另外一个问题是链接在连续点击时失效。

我再试一次,更长一次:

$('#userbar a').click(function() {
      var c = $(this).attr('class');
        switch (c) {
        case 'login-form':
            $('#' + c).slideToggle('slow');
            $(this).toggleClass('active');
            $('#register-form').hide();
            break;
        case 'register-form':
            $('#' + c).slideToggle('slow');
            $(this).toggleClass('active');
            $('#login-form').hide();
            break;
        }
        return false;
    });

这个比第一个更差:(

有任何纠正行为的建议吗?

我想要的是点击类登录表单的链接,所以用ID登录表格切换表单,如果打开则隐藏注册表单。

非常感谢任何帮助。感谢。

1 个答案:

答案 0 :(得分:2)

在切换课程或尝试隐藏课程之前,尝试对“slideToggle”效果当前正在运行的任何元素使用.stop()方法,例如:

$('#userbar a').click(function() {
  var c = $(this).attr('class');
  $('#userbar a').stop(); //stop any currently running animations, which might be messing with the "hide()" method below
  $('#userbar a').removeClass('active');
  $(this).toggleClass('active');
  $('#register-form,#login-form').hide(); //bad, causing flashy
  $('#' + c).slideToggle('slow');

    return false;
});