|
выпадающее меню
Есть следующий скрипт выпадающего меню:
$(document).ready(function () { $('#megamenu li').hover( function () { //показать подменю $('#level', this).slideDown(0); }, function () { //скрыть подменю $('.level', this).slideUp(0); } ); }); Как сделать, что бы выпадающий список был всегда в пределах экрана. В связи с тем, что некоторые пункты меню находятся очень близко к правому краю экрана, то при раскрытии списка меню, часть просто скрывается за пределами экрана. Заранее спасибо. |
выяснить их ширину и сдвинуть на нужное значение, единственное есть НО это то что выяснить их ширину в момент когда они скрыты не реально, поэтому нужно временно его отобразить измерить скрыть
$(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); } ); }); |
ругается на не закрытую скобку в условии, но вроде проверил все в порядке. Может я слепой?
|
Цитата:
Подскажите пожалуйста, как решить данную проблему? |
$(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); } ); }); |
devote, спасибо.
С той ошибкой справились, но теперь выскакивает другая ошибка, теперь на двоеточие в этой стоке el.css("left": (document.body.offsetWidth - el[0].offsetWidth) + "px"); Ошибка следующего вида: missing ) after argument list |
Это я ошибку сделал:
el.css("left", (document.body.offsetWidth - el[0].offsetWidth) + "px"); |
devote, огромное спасибо!!!!
Все заработало. А вы не подскажете можно ли регулировать отступом? Например если я захочу, что бы выпадающая часть была не в плотную к краю экрана, а был отступ от края экрана в n-ое количество пикселей? |
el.css("left", ((document.body.offsetWidth - el[0].offsetWidth) - 100) + "px"); |
Еще раз Спасибо)
|
Часовой пояс GMT +3, время: 17:05. |
|