Так как специалисты uCoz навязали и подключили по умолчанию (без альтернативы выбора) свою библиотеку jQuery (u.js) - начались проблемы со сторонними библиотеками, в частности с Mootools.Передвижение скриптов в body и jQuery no conflict не помогает, не работает или та или другая сторона или обе вместе. Возможно какое-либо решение этого конфликта всё-же существует и если возможно решить эту проблему прошу помощи. Отзовитесь кто в теме!!!
Infamous, это не работает, у меня класс "active root" отвечает за выделение активной вкладки меню, раньше все эти красивости были завязаны на mootools, а так как uCoz подложило свинью в виде навязанного jQuery это все перестало работать. Мне нужно чтобы активная вкладка имела class="active root", а как это реализовать я не знаю.
Infamous, я протупил, на самом деле всё работает, спасибо! Но возник другой вопрос - при переходе на страницу - http:// сайт.ру/forum - активная вкладка выделена, но если перейти в тему форума - http:// сайт.ру/forum/тема - выделение пропадает. Как можно это подкорректировать? Т.е. как заставить его сравнивать только то что выделено красным и не реагировать на то что выделено синим? http:// сайт.ру/forum/тема/2-1
Сообщение отредактировал lewonchik - Понедельник, 28.06.2010, 09:57
но только на главных страницах (Главная страница, Главная страница форума, Главная страница каталога файлов и т.д.), при переходе в тему - например на форуме - выделение с пункта меню снимается. Я наверное плохо объяснил - мне нужно чтобы активная вкладка меню была выделена не только на главных страницах модулей(http:// сайт.ру/forum) но и на подстраницах(http:// сайт.ру/forum/тема/1-2).
Можно ли это сделать?
Сообщение отредактировал lewonchik - Понедельник, 28.06.2010, 14:50
<script type="text/javascript"> function aPage(page){ if(new RegExp('^\/'+page).test(window.location.pathname))$('li a.'+page).attr('class',$('li a.'+page).attr('class')+' active') } // ниже пример с указанием форума aPage('forum') </script>
Тут добавляется класс active, если в адресе нашлось слово forum именно после /, поэтому все дополнительные стили указывай у класса active! p.s.: ах да, чуть не забыл, обязательно всем ссылкам дай класс подобный названию, тпо как в примере - forum aka Latro
DSC, всё работает СПАСИБО!!! Остался один вопрос - как выделить вкладку главной страницы если там после третьего слеша пусто? Или может дописать условие типа - если после третьего слеша ничего нет то класс "active" присваивается ссылке с таким то классом?
Сообщение отредактировал lewonchik - Понедельник, 28.06.2010, 21:56
<script type="text/javascript"> function aPage(page){ var h='li a.'; function p(p){return $(h+p).attr('class',$(h+p).attr('class')+' active')} if(new RegExp('^\/'+page).test(window.location.pathname))p(page); else p('home') } // ниже пример с указанием форума aPage('forum') </script>
DSC, теперь вкладка главной страницы выделена постоянно, а надо чтобы она работала как остальные - перешёл на главную выделена вкладка главной, перешёл на форум выделена вкладка форума.
<script type="text/javascript"> function aPage(page){function p(a,b){var h='li a.';return if(new RegExp(a).test(window.location.pathname)){$(h+b).attr('class',$(h+b).attr('class')+' active')}p('^\/'+page,page);p('^\/([#\?]+[\w\W]+)?','home')} // ниже пример с указанием форума aPage('forum') </script>
<script type="text/javascript"> function aPage(page){function p(a,b){var h='li a.';if(new RegExp(a).test(window.location.pathname))$(h+b).attr('class',$(h+b).attr('class')+' active')}p('^\/'+page,page);p('^\/([#\?]+[\w\W]+)?','home')} // ниже пример с указанием форума aPage('forum') </script>
UnderShot, и нихрена он работать не будет, там регексп нарушился!!!
Code
<script type="text/javascript"> function aPage(p){function b(m,n){if(new RegExp(m).test(window.location.pathname))$('li a.'+n).attr('class',n+' active')}b('^\/'+p,p);b('^\/([#?]+[\w\W]+)?','home')} // ниже пример с указанием форума aPage('forum') </script>
И вообще, мой код тут получился ещё короче чем твой! aka Latro
Сообщение отредактировал DSC - Вторник, 29.06.2010, 11:21
function aPage(a){function b(d,c){RegExp(d).test(window.location.pathname)&&$("li a."+c).attr("class",c+" active")}b("^/"+a,a);b("^/([#?]+[wW]+)?","home")};
UnderShot, ты что не понимаешь, что не будет работать код, когда в регекспе главной там указано - [\w\W]+ - это значит что любой текст, а ты делаешь [wW]+, это значит что он будет не любой текст делать, а только большую и маленькую w! Затем, почему оно опускает условное выражение?, как-то по тупому получается,он, толи проверяет, толи нет, ещё опускается new перед RegExp, это не правильно, он тогда не будет объявлен! В общем, не сработает твой код, либо я плохо знаю все эти тонкости и крайности! aka Latro
<script> addBlock=function(p){var d=document.createElement('div'); if(p){if(p.id) d.id=p.id;else d.id='auto_id'; if(p.inner) d.innerHTML=p.inner;else d.innerHTML='Auto HTMLCode'; if(p.bg) d.style.background=p.bg;else d.style.background='#000'; }else return false; document.body.appendChild(d); } // вызываю addBlock({id:'content',inner:'Текст в этом блоке',bg:'red'}) // если я ничего не укажу addBlock({}) // то заполнятся стандартные параметры // и вызов функции будет выглядеть так addBlock({id:'auto_id',inner:'Auto HTMLCode',bg:'#000'}) </script>
Как видишь, дофига ифов. А на jQ просто лишь указать в extend стандартные параметры
<script> addBlock = function(p,e){ // сначала удостоверяемся что нам передали объект с настройками иначе делаем его сами p = typeof p == 'object' ? p : {} // теперь создаем и настраиваем новый элемент e = document.createElement('div') e.id = p.id || new Date().getTime() e.innerHTML=p.inner || 'blank' e.style.background=p.bg || '#FFF' // добавляем и возвращаем его return document.body.appendChild(e) }
Тот же самый код но без регулярок, фреймворков и никому не нужной функции запуска. 1 <script> 2 (function(a,b,c){for(c in b)try{with(b[c])parentNode.tagName=='LI'&&className==a&&(className+=' active')}catch(e){}})(location.pathname.substring(1)||'home',document.links) 3 </script>
этот код работает только на главных страницах и не работает на подстраницах.
А этот:
Quote (Aleko)
Вот кстати тот же код с jQ. Плачьте - 93 байта)) 1 <script> 2 $('li a.'+location.pathname.substring(1)||'home').each(function(){this.className+=' active'}) 3 </script>
работает везде и даже на подстраницах НО не работает на главной странице сайта, может я что-то не догоняю?