1

我目前正在使用以下代码切换下拉 div 菜单:

$(function() {
  function toggleMenu(show) {
    $(".dropdownInfo").toggle(show);
    $('.userNavBar').css('background-color', show ? '#444' : '#333');
    $('.upperBar').css('border-top-color', show ? '#ff556f' : '#333');
  };
  $('.userNavBar').click(function(e) {
    toggleMenu(true);
    e.stopPropagation();
  });
  $("body").click(function(e) {
    toggleMenu(false);
  });
});

是否有更快/更好/更有效的方式来切换 div?这似乎是一个非常大的代码块..

4

2 回答 2

2

在样式表中使用更多的 CSS,并减少内联。然后你可以切换一个类,然后站着看...classy。另一件事:您可以只绑定一个click事件侦听器,并在事件处理程序中检查是否应该打开或关闭菜单。

CSS

.userNavBar {
    background-color: #333;
}

.userNavBar.active {
    background-color: #444;
}

.upperBar {
    border-top-color: #333;
}

.upperBar.active {
    border-top-color: #ff556f;
}

JavaScript

$(function() {
  function toggleMenu(show) {
    $('.dropdownInfo').toggle(show);
    $('.userNavBar, .upperBar').toggleClass('active', show);
  };

  $('body').on('click', function(e) {
    var show = $(e.target).hasClass('userNavBar');
    if (show) e.preventDefault(); // not sure this is even necessary anymore
    toggleMenu(show);
  });
});

另外,请不要混用单引号和双引号。选择一个,并保持一致。

于 2011-12-24T04:53:00.260 回答
-2

您可以尝试使用持续时间切换

于 2011-12-24T04:34:44.593 回答