Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 01.07.2015, 16:18
Новичок на форуме
Отправить личное сообщение для pistachio Посмотреть профиль Найти все сообщения от pistachio
 
Регистрация: 01.07.2015
Сообщений: 2

Присвоение класса при скроле
Здравствуйте, подскажите пожалуйста, не пойму почему не работает.
Вообще сделал всплывающие меню с анимацией css , при присвоении класса всплывает, при присвоении другого класса уезжает вверх, сначала сделал так
jQuery(function (f) {
      f(window).scroll(function () {
      f('#hide-navbar-header')[(f(this).scrollTop() > 180 ? "add" : "remove") + "Class"]("hide-navbar-header_fixed");
     f('#hide-navbar-header')[(f(this).scrollTop() < 180 ? "add" : "remove") + "Class"]("hide-navbar-header_hide");
      });
    });


Все присваивает, но получается что при первой прокрутке появляется анимация исчезновения ещё до того как оно всплыло, задача состоит в том чтобы он присваивал класс только после того как оно всплыло в первый раз, все облазил, перечитал получилось вот это
script>
    jQuery(function (f) {
      f(window).scroll(function () {
      if (f('#hide-navbar-header')[(f(this).scrollTop() > 180  )]){
                f('#hide-navbar-header').addClass("hide-navbar-header_fixed");
	  } else if(f('#hide-navbar-header')[(f(this).scrollTop() <= 180 && f('#hide-navbar-header').hasClass("hide-navbar-header_fixed"))]) {
               f('#hide-navbar-header').removeClass("hide-navbar-header_fixed").addClass("hide-navbar-header_hide");
            }
      });
    });
 
  </script>


Ошибки выдавать перестал, но просто не работает , что не так ? помогите допилить пожалуйста
Ответить с цитированием
  #2 (permalink)  
Старый 01.07.2015, 17:23
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

pistachio,
зачем убирать/добавлять класс hide-navbar-header_hide ? пусть будет постоянно
.hide-navbar-header_hide -- элемент скрыт
.hide-navbar-header_hide.hide-navbar-header_fixed - видно
Ответить с цитированием
  #3 (permalink)  
Старый 01.07.2015, 17:52
Новичок на форуме
Отправить личное сообщение для pistachio Посмотреть профиль Найти все сообщения от pistachio
 
Регистрация: 01.07.2015
Сообщений: 2

спасибо, получилось, пришлось поиграть со свойством transition
хотелось бы конечно в скрипте разобраться, думаю в будущем мог бы пригодится, и для себя понять в чем ошибка
Ответить с цитированием
  #4 (permalink)  
Старый 01.07.2015, 18:16
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

pistachio,
может так изначально нужно было
jQuery(function(f) {
    f(window).scroll(function() {
        f('#hide-navbar-header')[(f(this).scrollTop() > 180 ? "add" : "remove") + "Class"]("hide-navbar-header_fixed")
            .[(f(this).scrollTop() > 180 ? "remove" : "add") + "Class"]("hide-navbar-header_hide");
    });
});
Ответить с цитированием
  #5 (permalink)  
Старый 05.07.2015, 18:08
Аватар для Sigizmund2012
Профессор
Отправить личное сообщение для Sigizmund2012 Посмотреть профиль Найти все сообщения от Sigizmund2012
 
Регистрация: 16.07.2014
Сообщений: 267

Сообщение от рони Посмотреть сообщение
pistachio,
может так изначально нужно было
jQuery(function(f) {
    f(window).scroll(function() {
        f('#hide-navbar-header')[(f(this).scrollTop() > 180 ? "add" : "remove") + "Class"]("hide-navbar-header_fixed")
            .[(f(this).scrollTop() > 180 ? "remove" : "add") + "Class"]("hide-navbar-header_hide");
    });
});
Как работает этот сатанинский код? Минут пять втыкаю, не могу понять
f это псевдоним jQuery, понятно. Вот эта строка что делает?:
f('#hide-navbar-header')[(f(this).scrollTop() > 180 ? "add" : "remove") + "Class"]("hide-navbar-header_fixed")

Тернарный оператор преобразуется в "add" или "remove", получаем примерно это:
f('#hide-navbar-header')["addClass"]("hide-navbar-header_fixed")

Это такое вырвиглазное обращение к методу коллекции jQuery? Кто-нибудь пояснит мне, зачем так делать?
Ответить с цитированием
  #6 (permalink)  
Старый 05.07.2015, 18:27
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Sigizmund2012,
так проще и короче, предложите свой вариант если этот не устраивает.
Ответить с цитированием
  #7 (permalink)  
Старый 05.07.2015, 18:45
Аватар для Sigizmund2012
Профессор
Отправить личное сообщение для Sigizmund2012 Посмотреть профиль Найти все сообщения от Sigizmund2012
 
Регистрация: 16.07.2014
Сообщений: 267

Сообщение от рони
предложите свой вариант если этот не устраивает
Предложение в стиле К.О.:
jQuery(function(f) {
    f(window).scroll(function() {
      var navbar = f('#hide-navbar-header');
      if (f(this).scrollTop() > 180) {
        navbar.addClass("hide-navbar-header_fixed").removeClass("hide-navbar-header_hide");
      }
      else{
        navbar.removeClass("hide-navbar-header_fixed").addClass("hide-navbar-header_hide");
      }
      });
});

Кода чуть больше, но читается он гораздо легче.
Ответить с цитированием
  #8 (permalink)  
Старый 05.07.2015, 18:50
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Sigizmund2012,
ок!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Смена картинки кнопки при нажатии и обратно при повторном нажатии mff Общие вопросы Javascript 15 03.05.2018 14:12
Назначение класса элементу с id при наведении курсора на другой id freddie Events/DOM/Window 1 27.03.2015 22:27
Как сделать чтобы элемент появлялся при скроле страницы, у определенного класса. SnakeAce Общие вопросы Javascript 1 30.01.2013 14:32
Смена класса при клики с условием NeVirus Events/DOM/Window 1 09.01.2013 08:20
Добавление класса на елемент по id при фокусе на input Andrew_tl Events/DOM/Window 1 18.02.2010 19:09