Вставь этот код где нить в одном месте, например в внутри тега <head>
<script type="text/javascript"> $(document).ready(function () { $('.megamenu li').hover( function () { var maxLeft = $('.header').width() + $('.header')[0].offsetLeft, el = $('.level', this).show(); if ( Math.max(0, el[0].offsetLeft - ( maxLeft - el[0].offsetWidth ) ) != 0 ) { el.css("left", (maxLeft - el[0].offsetWidth) + "px"); } //показать подменю el.hide().slideDown(0); }, function () { //скрыть подменю $('.level', this).slideUp(0); } ); }); </script> И не нужно будет клонировать сотню раз его. |
дело все в том, что это скрипт находится в xsl шаблоне и в цикле, поэтому расклонировался для каждого пункта меню)
|
а еще я привязан к id меню
|
А вы не поможете ограничить вывод скрипта, на те пункты меню, в которых нет выпадающего списка? А то к ним применяется стиль для выпадающего меню, это видно в разделе Студентам
|
да я там еще кой чё пропустил у тя на сайте, в коде не то написал, надо вместо этого:
var maxLeft = $('.header').width() + $('.header')[0].offsetLeft,написать так: var maxLeft = $('.header').width(),Я не обратил внимания на то что header стоит с релативной позицией. Цитата:
$(document).ready(function () { $('.megamenu li').hover( function () { var maxLeft = $('.header').width(), el = $('.level', this); if ( el.find('a').length != 0 ) { el.show(); if ( Math.max(0, el[0].offsetLeft - ( maxLeft - el[0].offsetWidth ) ) != 0 ) { el.css("left", (maxLeft - el[0].offsetWidth) + "px"); } //показать подменю el.hide().slideDown(0); } }, function () { //скрыть подменю $('.level', this).slideUp(0); } ); }); |
Работает)))
|
а вы случаем не разбираетесь в xsl шаблонах?
|
Цитата:
|
у меня сайт на движке, который обязывает делать вывод через xsl(((
|
devote, у меня еще пару вопросов по скрипту:
$(document).ready(function () { $('.megamenu li').hover( function () { var maxLeft = $('.header').width(), el = $('.level', this); if ( el.find('a').length != 0 ) { el.show(); if ( Math.max(0, el[0].offsetLeft - ( maxLeft - el[0].offsetWidth ) ) != 0 ) { el.css("left", (maxLeft - el[0].offsetWidth) + "px"); } //показать подменю el.hide().slideDown(0); } }, function () { //скрыть подменю $('.level', this).slideUp(0); } ); }); Ко всем элементам меню 3-его и 4-ого уровня меню(div level3 и div level4) применен олин стиль. Но у самого правого, к примеру в О КОЛЛЕДЖЕ это колледж сегодня, а в АБИТУРИЕНТАХ это колледж сегодня, когда выпадает список, то div level3 и div level4 которым в css задано быть рядом, просто отображаются друг под другом. Дело в скрипте или все же css нужно править? Хотя в css все нормуль, может у вас есть идеи? |
Часовой пояс GMT +3, время: 14:57. |