Лучший способ переключать выпадающий div при нажатии и выключении? - PullRequest
1 голос
/ 24 декабря 2011

В настоящее время я переключаю раскрывающееся меню 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?Это похоже на очень большой кусок кода ..

Ответы [ 2 ]

2 голосов
/ 24 декабря 2011

Используйте больше CSS в таблице стилей и меньше встроенных.Тогда вы можете просто переключать класс и стоять и смотреть ... классный .Еще одна вещь: вы можете связать только один 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);
  });
});

Также, пожалуйста, не смешивайте одинарные и двойные кавычки.Выберите один и будьте последовательны.

0 голосов
/ 24 декабря 2011

вы можете попробовать переключиться с продолжительностью

...