Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 10.08.2011, 16:00
Аспирант
Отправить личное сообщение для Денис2201 Посмотреть профиль Найти все сообщения от Денис2201
 
Регистрация: 04.08.2011
Сообщений: 38

выпадающее меню
Есть следующий скрипт выпадающего меню:
$(document).ready(function () {
				
			$('#megamenu li').hover(
				function () {
				//показать подменю
			$('#level', this).slideDown(0);
				
				},
				function () {
				//скрыть подменю
				$('.level', this).slideUp(0);
				}
				);
				
		});


Как сделать, что бы выпадающий список был всегда в пределах экрана.
В связи с тем, что некоторые пункты меню находятся очень близко к правому краю экрана, то при раскрытии списка меню, часть просто скрывается за пределами экрана.

Заранее спасибо.
Ответить с цитированием
  #2 (permalink)  
Старый 10.08.2011, 16:23
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

выяснить их ширину и сдвинуть на нужное значение, единственное есть НО это то что выяснить их ширину в момент когда они скрыты не реально, поэтому нужно временно его отобразить измерить скрыть

$(document).ready(function () { 
    $('#megamenu li').hover( 
        function () {
           var el = $('#level', this).show();
           if (el[0].offsetLeft > ( document.body.offsetWidth - el[0].offsetWidth) ) {
               el.css("left": (document.body.offsetWidth - el[0].offsetWidth) + "px");
           }
            //показать подменю 
           el.hide().slideDown(0); 
        }, 
        function () { 
            //скрыть подменю 
           $('.level', this).slideUp(0); 
        }
      ); 
});
Ответить с цитированием
  #3 (permalink)  
Старый 10.08.2011, 16:40
Аспирант
Отправить личное сообщение для Денис2201 Посмотреть профиль Найти все сообщения от Денис2201
 
Регистрация: 04.08.2011
Сообщений: 38

ругается на не закрытую скобку в условии, но вроде проверил все в порядке. Может я слепой?
Ответить с цитированием
  #4 (permalink)  
Старый 10.08.2011, 17:04
Аспирант
Отправить личное сообщение для Денис2201 Посмотреть профиль Найти все сообщения от Денис2201
 
Регистрация: 04.08.2011
Сообщений: 38

Сообщение от devote Посмотреть сообщение
выяснить их ширину и сдвинуть на нужное значение, единственное есть НО это то что выяснить их ширину в момент когда они скрыты не реально, поэтому нужно временно его отобразить измерить скрыть

$(document).ready(function () { 
    $('#megamenu li').hover( 
        function () {
           var el = $('#level', this).show();
           if (el[0].offsetLeft > ( document.body.offsetWidth - el[0].offsetWidth) ) {
               el.css("left": (document.body.offsetWidth - el[0].offsetWidth) + "px");
           }
            //показать подменю 
           el.hide().slideDown(0); 
        }, 
        function () { 
            //скрыть подменю 
           $('.level', this).slideUp(0); 
        }
      ); 
});
Когда я скрипт ставлю в xsl шаблон, то он в условии знак > меняет на > и считает, что после > идет конец условия.
Подскажите пожалуйста, как решить данную проблему?
Ответить с цитированием
  #5 (permalink)  
Старый 11.08.2011, 04:31
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

$(document).ready(function () {  
    $('#megamenu li').hover(  
        function () { 
           var el = $('#level', this).show(); 
           if ( Math.max(0, el[0].offsetLeft - ( document.body.offsetWidth - el[0].offsetWidth ) ) != 0 ) { 
               el.css("left": (document.body.offsetWidth - el[0].offsetWidth) + "px"); 
           } 
            //показать подменю  
           el.hide().slideDown(0);  
        },  
        function () {  
            //скрыть подменю  
           $('.level', this).slideUp(0);  
        } 
      );  
});
Ответить с цитированием
  #6 (permalink)  
Старый 11.08.2011, 10:16
Аспирант
Отправить личное сообщение для Денис2201 Посмотреть профиль Найти все сообщения от Денис2201
 
Регистрация: 04.08.2011
Сообщений: 38

devote, спасибо.
С той ошибкой справились, но теперь выскакивает другая ошибка, теперь на двоеточие в этой стоке
el.css("left": (document.body.offsetWidth - el[0].offsetWidth) + "px");


Ошибка следующего вида: missing ) after argument list
Ответить с цитированием
  #7 (permalink)  
Старый 11.08.2011, 10:17
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Это я ошибку сделал:
el.css("left", (document.body.offsetWidth - el[0].offsetWidth) + "px");
Ответить с цитированием
  #8 (permalink)  
Старый 11.08.2011, 10:23
Аспирант
Отправить личное сообщение для Денис2201 Посмотреть профиль Найти все сообщения от Денис2201
 
Регистрация: 04.08.2011
Сообщений: 38

devote, огромное спасибо!!!!
Все заработало. А вы не подскажете можно ли регулировать отступом?
Например если я захочу, что бы выпадающая часть была не в плотную к краю экрана, а был отступ от края экрана в n-ое количество пикселей?
Ответить с цитированием
  #9 (permalink)  
Старый 11.08.2011, 10:25
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

el.css("left", ((document.body.offsetWidth - el[0].offsetWidth) - 100) + "px");
Ответить с цитированием
  #10 (permalink)  
Старый 11.08.2011, 10:32
Аспирант
Отправить личное сообщение для Денис2201 Посмотреть профиль Найти все сообщения от Денис2201
 
Регистрация: 04.08.2011
Сообщений: 38

Еще раз Спасибо)
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Находится ли мышка над дивом ? (выпадающее меню) advsm jQuery 31 24.09.2014 17:50
Выпадающее меню на JS (подкатегории) Trueplayer Events/DOM/Window 5 18.09.2014 22:29
Выпадающее меню не работает в Chrome Bangoo jQuery 1 21.03.2011 20:33
Как сделать, чтобы выпадающее меню оставалось развернутым? Эдгар Элементы интерфейса 1 28.02.2011 19:43
Выпадающее меню theo_ Общие вопросы Javascript 18 05.10.2009 11:34