Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 26.09.2013, 14:30
Аспирант
Отправить личное сообщение для razorg1991 Посмотреть профиль Найти все сообщения от razorg1991
 
Регистрация: 10.11.2012
Сообщений: 98

Почему не работает скрипт?
Имеется скрипт:

$(document).ready(function(){
 
        var $menu = $("#menu");
 
        $(window).scroll(function(){
            if ( $(this).scrollTop() > 100 && $menu.hasClass("header-menu") ){
                $menu.addClass("navbar-fixed-top");
            } else if($(this).scrollTop() <= 100 && $menu.hasClass("navbar-fixed-top")) {
                $menu.removeClass("navbar-fixed-top");
            }
        });//scroll
    });


Структура html

<div class="header-logo">лого</div>
<div class="header-menu" id="menu">
контент
</div>


CSS:
Код:
.header-logo {
        width:100%;
	background: #333333; /* Old browsers */
	border-bottom:1px solid #000;
}
.header-menu {
        width:100%;
	background: #f8bb49; /* Old browsers */
	border-top:1px solid #fcdda4;
	border-bottom:1px solid #a16013;
}
.navbar-fixed-top {
        position: fixed;
        right: 0;
        left: 0;
}
Почему-то скрипт не хочет фиксировать блок menu при скроле
А в консоли вот это:
TypeError: $ is not a function
	var $menu = $("#menu");


В чем причина?
Ответить с цитированием
  #2 (permalink)  
Старый 26.09.2013, 14:42
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

razorg1991,
либо jquery неуспело прогрузиться либо другой скрипт занял $
Ответить с цитированием
  #3 (permalink)  
Старый 26.09.2013, 14:53
Аспирант
Отправить личное сообщение для razorg1991 Посмотреть профиль Найти все сообщения от razorg1991
 
Регистрация: 10.11.2012
Сообщений: 98

Сообщение от рони Посмотреть сообщение
razorg1991,
либо jquery неуспело прогрузиться либо другой скрипт занял $
Помимо jquery у меня подключается еще и mootools, также подключен bootstrap.js . Вначале идет jquery потом плагин миграции jquery-migrate-1.2.1.js, потом mootools. При таком раскладе все корректно работает. Стоит мне подключить этот скрипт, выскакивает ошибка в консоли (подключаю скрипт сразу после подключения плагина миграции). Да и еще при подключении этого скрипта начинает некорректно работать toggle бутстрапа.
А можно ли как-то переписать этот скрипт на чистом js, чтобы не возникало этих проблем?

Последний раз редактировалось razorg1991, 26.09.2013 в 14:57.
Ответить с цитированием
  #4 (permalink)  
Старый 26.09.2013, 15:00
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

razorg1991,
jQuery.noConflict();

jQuery.noConflict();
jQuery(document).ready(function($) {
  // здесь $ будет действовать как алиас jQuery
});


Сообщение от razorg1991
переписать этот скрипт на чистом js
на форуме есть подобные решения
Ответить с цитированием
  #5 (permalink)  
Старый 26.09.2013, 15:05
Аспирант
Отправить личное сообщение для razorg1991 Посмотреть профиль Найти все сообщения от razorg1991
 
Регистрация: 10.11.2012
Сообщений: 98

Заработало ))))) Держи еще плюс )))
Ответить с цитированием
  #6 (permalink)  
Старый 26.09.2013, 15:22
Аспирант
Отправить личное сообщение для razorg1991 Посмотреть профиль Найти все сообщения от razorg1991
 
Регистрация: 10.11.2012
Сообщений: 98

Теперь даже поправил немного скрипт:

jQuery.noConflict();
jQuery(document).ready(function($){
 
        var $menu = $("#menu");
		var $logo = $("#logo");
 
        $(window).scroll(function(){
            if ( $(this).scrollTop() > $logo.height() ){
                $menu.addClass("navbar-fixed-top");
            } else if($(this).scrollTop() <= $logo.height()) {
                $menu.removeClass("navbar-fixed-top");
            }
        });//scroll
    });


А в html добавил еще диву с классом header-logo еще id logo. Теперь скрипт автоматом вычисляет, когда нужно фиксировать меню сверху ))))
Ответить с цитированием
  #7 (permalink)  
Старый 26.09.2013, 15:30
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

razorg1991,
кешировать так кешировать
jQuery.noConflict();
jQuery(document).ready(function($){

        var $menu = $("#menu"),
		    $logo = $("#logo"),
            $window = $(window);

        $window.scroll(function(){
            if ( $window.scrollTop() > $logo.height() ){
                $menu.addClass("navbar-fixed-top");
            } else if($window.scrollTop() <= $logo.height()) {
                $menu.removeClass("navbar-fixed-top");
            }
        });//scroll
    });
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Имеется скрипт калькулятора - не пойму почему не работает tishkovav AJAX и COMET 4 15.02.2012 15:21
Подскажите пожалуйста почему не работает. gheka Общие вопросы Javascript 7 11.02.2012 22:07
Не работает скрипт в дальней директории Raonde Общие вопросы Javascript 3 30.01.2012 09:15
Не работает скрипт :( VladimirV Javascript под браузер 5 21.12.2010 14:26
Почему не работает скрипт? milvic Общие вопросы Javascript 3 03.03.2008 14:12