• Страница 1 из 2
  • 1
  • 2
  • »
Форум Studio AD » Сайтостроение » Общий форум по Javascript » Mootools и jQuery
Mootools и jQuery
lewonchik
Дата: Понедельник, 01.03.2010, 20:35 | Сообщение # 1
молчун
Группа: Проверенные
Пользователь №: 220
Сообщений: 45
Так как специалисты uCoz навязали и подключили по умолчанию (без альтернативы выбора) свою библиотеку jQuery (u.js) - начались проблемы со сторонними библиотеками, в частности с Mootools.Передвижение скриптов в body и jQuery no conflict не помогает, не работает или та или другая сторона или обе вместе.
Возможно какое-либо решение этого конфликта всё-же существует и если возможно решить эту проблему прошу помощи. Отзовитесь кто в теме!!!


  
Aleko
Дата: Понедельник, 01.03.2010, 21:17 | Сообщение # 2
Watching you
Группа: Администраторы
Пользователь №: 2
Сообщений: 1621
Получено оценок: 167
Есть возможность убрать загрузку u.js но это повлияет на львиную долю скриптов ucoz на сайте.

Бесплатные обои.
  
lewonchik
Дата: Вторник, 02.03.2010, 16:50 | Сообщение # 3
молчун
Группа: Проверенные
Пользователь №: 220
Сообщений: 45
Aleko, а что именно не будет работать?

  
UnderShot
Дата: Вторник, 02.03.2010, 17:21 | Сообщение # 4
оратор
Группа: Модераторы
Пользователь №: 45
Сообщений: 923
Получено оценок: 85
lewonchik, ajax окна, и вообще, все что связано с uCoz скриптами

Очень важная тема!
Filmzona — онлайн фильмы.
  
lewonchik
Дата: Среда, 03.03.2010, 00:54 | Сообщение # 5
молчун
Группа: Проверенные
Пользователь №: 220
Сообщений: 45
А есть какая-нибудь другая возможность решить эту проблему?

  
lewonchik
Дата: Среда, 03.03.2010, 13:39 | Сообщение # 6
молчун
Группа: Проверенные
Пользователь №: 220
Сообщений: 45
Есть ещё один вопрос по меню - вот кусок кода
Code
<ul class="menutop level1" >
    <li class="root" > <a class="orphan item bullet" href="$HOME_PAGE_LINK$" > <span> Главная страница </span> </a> </li>
    <li class="root" > <a class="daddy item bullet subtext nolink" href="/load/" > <span> Downloads <em>Скачать бесплатно</em></span> </a>

Как сделать чтобы при переходе на другую страницу происходила смена класса у <li>, чтобы на открытой (активной) странице вставал
Code
<li class="active root" >

Прошу помочь!!!




Сообщение отредактировал lewonchik - Среда, 03.03.2010, 19:37
  
Infamous
Дата: Среда, 03.03.2010, 19:48 | Сообщение # 7
говорун
Группа: Проверенные
Пользователь №: 316
Сообщений: 158
Получено оценок: 21
Code
$('li').each(function () {
if (this.href == location.href) this.className += ' active';
});
  
lewonchik
Дата: Среда, 03.03.2010, 21:01 | Сообщение # 8
молчун
Группа: Проверенные
Пользователь №: 220
Сообщений: 45
Infamous, это не работает,
у меня класс "active root" отвечает за выделение активной вкладки меню, раньше все эти красивости были завязаны на mootools, а так как uCoz подложило свинью в виде навязанного jQuery это все перестало работать. Мне нужно чтобы активная вкладка имела class="active root", а как это реализовать я не знаю.


  
lewonchik
Дата: Воскресенье, 27.06.2010, 22:25 | Сообщение # 9
молчун
Группа: Проверенные
Пользователь №: 220
Сообщений: 45
Infamous, я протупил, на самом деле всё работает, спасибо! Но возник другой вопрос - при переходе на страницу - http:// сайт.ру/forum - активная вкладка выделена, но если перейти в тему форума - http:// сайт.ру/forum/тема - выделение пропадает. Как можно это подкорректировать?
Т.е. как заставить его сравнивать только то что выделено красным и не реагировать на то что выделено синим?
http:// сайт.ру/forum/тема/2-1




Сообщение отредактировал lewonchik - Понедельник, 28.06.2010, 09:57
  
UnderShot
Дата: Понедельник, 28.06.2010, 11:11 | Сообщение # 10
оратор
Группа: Модераторы
Пользователь №: 45
Сообщений: 923
Получено оценок: 85
Code
$('li').each(function () {
location.pathname.indexOf(this.href)!=-1&&this.className+=" active root";
});


Очень важная тема!
Filmzona — онлайн фильмы.
  
lewonchik
Дата: Понедельник, 28.06.2010, 14:49 | Сообщение # 11
молчун
Группа: Проверенные
Пользователь №: 220
Сообщений: 45
UnderShot, не работает, теперь вообще не реагирует.

Этот код работает:

Code
$('li a').each(function () {
if (this.href == location.href) this.className += 'active';
});
но только на главных страницах (Главная страница, Главная страница форума, Главная страница каталога файлов и т.д.), при переходе в тему - например на форуме - выделение с пункта меню снимается.
Я наверное плохо объяснил - мне нужно чтобы активная вкладка меню была выделена не только на главных страницах модулей(http:// сайт.ру/forum) но и на подстраницах(http:// сайт.ру/forum/тема/1-2).

Можно ли это сделать?




Сообщение отредактировал lewonchik - Понедельник, 28.06.2010, 14:50
  
DSC
Дата: Понедельник, 28.06.2010, 18:34 | Сообщение # 12
спикер
Группа: Проверенные
Пользователь №: 127
Сообщений: 516
Получено оценок: 41
Попробуй вот это, должно сработать:
Code
<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
  
lewonchik
Дата: Понедельник, 28.06.2010, 19:21 | Сообщение # 13
молчун
Группа: Проверенные
Пользователь №: 220
Сообщений: 45
DSC, всё работает СПАСИБО!!! Остался один вопрос - как выделить вкладку главной страницы если там после третьего слеша пусто? Или может дописать условие типа - если после третьего слеша ничего нет то класс "active" присваивается ссылке с таким то классом?



Сообщение отредактировал lewonchik - Понедельник, 28.06.2010, 21:56
  
DSC
Дата: Понедельник, 28.06.2010, 23:27 | Сообщение # 14
спикер
Группа: Проверенные
Пользователь №: 127
Сообщений: 516
Получено оценок: 41
lewonchik, вот:
Code
<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>
У главной поставь класс home!


aka Latro
  
lewonchik
Дата: Вторник, 29.06.2010, 06:56 | Сообщение # 15
молчун
Группа: Проверенные
Пользователь №: 220
Сообщений: 45
DSC, теперь вкладка главной страницы выделена постоянно, а надо чтобы она работала как остальные - перешёл на главную выделена вкладка главной, перешёл на форум выделена вкладка форума.

  
DSC
Дата: Вторник, 29.06.2010, 10:41 | Сообщение # 16
спикер
Группа: Проверенные
Пользователь №: 127
Сообщений: 516
Получено оценок: 41
Тогда вот:
Code
<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>
У главной поставь класс home!


aka Latro
  
lewonchik
Дата: Вторник, 29.06.2010, 11:00 | Сообщение # 17
молчун
Группа: Проверенные
Пользователь №: 220
Сообщений: 45
DSC, не работает, в коде где-то ошибка

  
DSC
Дата: Вторник, 29.06.2010, 11:11 | Сообщение # 18
спикер
Группа: Проверенные
Пользователь №: 127
Сообщений: 516
Получено оценок: 41
lewonchik, точняк, попробуй это:
Code
<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>


aka Latro
  
UnderShot
Дата: Вторник, 29.06.2010, 11:12 | Сообщение # 19
оратор
Группа: Модераторы
Пользователь №: 45
Сообщений: 923
Получено оценок: 85
Сокращенный код:
Code
function aPage(a){function b(d,c){RegExp(d).test(window.location.pathname)&&$("li a."+c).attr("class",$("li a."+c).attr("class")+" active")}b("^/"+a,a);b("^/([#?]+[wW]+)?","home")};


Очень важная тема!
Filmzona — онлайн фильмы.
  
DSC
Дата: Вторник, 29.06.2010, 11:17 | Сообщение # 20
спикер
Группа: Проверенные
Пользователь №: 127
Сообщений: 516
Получено оценок: 41
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
  
UnderShot
Дата: Вторник, 29.06.2010, 11:23 | Сообщение # 21
оратор
Группа: Модераторы
Пользователь №: 45
Сообщений: 923
Получено оценок: 85
бла бла бла

Очень важная тема!
Filmzona — онлайн фильмы.
  
UnderShot
Дата: Вторник, 29.06.2010, 11:24 | Сообщение # 22
оратор
Группа: Модераторы
Пользователь №: 45
Сообщений: 923
Получено оценок: 85
DSC,
Code
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")};
Твой: 157 байтов, мой: 153 байта.


Очень важная тема!
Filmzona — онлайн фильмы.
  
DSC
Дата: Вторник, 29.06.2010, 11:33 | Сообщение # 23
спикер
Группа: Проверенные
Пользователь №: 127
Сообщений: 516
Получено оценок: 41
UnderShot, ты что не понимаешь, что не будет работать код, когда в регекспе главной там указано - [\w\W]+ - это значит что любой текст, а ты делаешь [wW]+, это значит что он будет не любой текст делать, а только большую и маленькую w! Затем, почему оно опускает условное выражение?, как-то по тупому получается,он, толи проверяет, толи нет, ещё опускается new перед RegExp, это не правильно, он тогда не будет объявлен!
В общем, не сработает твой код, либо я плохо знаю все эти тонкости и крайности!


aka Latro
  
lewonchik
Дата: Вторник, 29.06.2010, 11:33 | Сообщение # 24
молчун
Группа: Проверенные
Пользователь №: 220
Сообщений: 45
DSC, все равно главная выделена постоянно посмотри сам ТУТ

  
UnderShot
Дата: Вторник, 29.06.2010, 11:35 | Сообщение # 25
оратор
Группа: Модераторы
Пользователь №: 45
Сообщений: 923
Получено оценок: 85
DSC, его сократил гугл. А я так, просто выложил код.

Очень важная тема!
Filmzona — онлайн фильмы.
  
DSC
Дата: Вторник, 29.06.2010, 11:36 | Сообщение # 26
спикер
Группа: Проверенные
Пользователь №: 127
Сообщений: 516
Получено оценок: 41
UnderShot, ладно, про условные я только узнал, что можно сделать так, но про регексп точно не правильно!

aka Latro
  
UnderShot
Дата: Вторник, 29.06.2010, 11:36 | Сообщение # 27
оратор
Группа: Модераторы
Пользователь №: 45
Сообщений: 923
Получено оценок: 85
DSC, и да
Code
/\W/

равно
Code
/[^\w]/


Очень важная тема!
Filmzona — онлайн фильмы.
  
DSC
Дата: Вторник, 29.06.2010, 11:38 | Сообщение # 28
спикер
Группа: Проверенные
Пользователь №: 127
Сообщений: 516
Получено оценок: 41
UnderShot, ты меня не понял:
Code
[\w\W]+ != [wW]+


aka Latro
  
UnderShot
Дата: Вторник, 29.06.2010, 11:40 | Сообщение # 29
оратор
Группа: Модераторы
Пользователь №: 45
Сообщений: 923
Получено оценок: 85
DSC, я про это понял, я говорю про большую дабл-ю: W
Quote
\W не буква, цифра или символ подчёркивания
/A\W/ не совпадает с A1 или с AB, совпадает с A+


Очень важная тема!
Filmzona — онлайн фильмы.
  
DSC
Дата: Вторник, 29.06.2010, 11:44 | Сообщение # 30
спикер
Группа: Проверенные
Пользователь №: 127
Сообщений: 516
Получено оценок: 41
UnderShot, а я ты думаешь не знаю об этом, вообще-то вот это - [\W\w]+ означае, что возможен любой символ!

aka Latro
  
DSC
Дата: Вторник, 29.06.2010, 11:47 | Сообщение # 31
спикер
Группа: Проверенные
Пользователь №: 127
Сообщений: 516
Получено оценок: 41
lewonchik, отправь мне свой скайп по лс, я тебе сделаю эту штуку!

aka Latro
  
UnderShot
Дата: Вторник, 29.06.2010, 11:50 | Сообщение # 32
оратор
Группа: Модераторы
Пользователь №: 45
Сообщений: 923
Получено оценок: 85
DSC, тогда не проще /.+/?

Очень важная тема!
Filmzona — онлайн фильмы.
  
DSC
Дата: Вторник, 29.06.2010, 11:54 | Сообщение # 33
спикер
Группа: Проверенные
Пользователь №: 127
Сообщений: 516
Получено оценок: 41
UnderShot, а, ну можно и так, но просто я щас делаю одну штуку на js, и вот в ней были проблемы с этим, вот я уже и запутался..)

aka Latro
  
UnderShot
Дата: Вторник, 29.06.2010, 11:54 | Сообщение # 34
оратор
Группа: Модераторы
Пользователь №: 45
Сообщений: 923
Получено оценок: 85
DSC, ясно.

Очень важная тема!
Filmzona — онлайн фильмы.
  
Aleko
Дата: Вторник, 29.06.2010, 12:32 | Сообщение # 35
Watching you
Группа: Администраторы
Пользователь №: 2
Сообщений: 1621
Получено оценок: 167
UnderShot, DSC, лошары =). Тот же самый код но без регулярок, фреймворков и никому не нужной функции запуска.

Code
<script>
(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)
</script>


Бесплатные обои.
  
DSC
Дата: Вторник, 29.06.2010, 12:34 | Сообщение # 36
спикер
Группа: Проверенные
Пользователь №: 127
Сообщений: 516
Получено оценок: 41
Aleko, давай без грубостей, я предложил свой вариант, который вполне нормально работал!

aka Latro
  
Aleko
Дата: Вторник, 29.06.2010, 12:48 | Сообщение # 37
Watching you
Группа: Администраторы
Пользователь №: 2
Сообщений: 1621
Получено оценок: 167
Quote (DSC)
давай без грубостей

Я любя, ты же понимаешь ) Вот кстати тот же код с jQ. Плачьте - 93 байта))

Code
<script>
$('li a.'+location.pathname.substring(1)||'home').each(function(){this.className+=' active'})
</script>


Бесплатные обои.
  
UnderShot
Дата: Вторник, 29.06.2010, 12:52 | Сообщение # 38
оратор
Группа: Модераторы
Пользователь №: 45
Сообщений: 923
Получено оценок: 85
Aleko, кстати, пока ты тут, не знаешь аналогию $.extend(), просто на js?

Очень важная тема!
Filmzona — онлайн фильмы.
  
Aleko
Дата: Вторник, 29.06.2010, 12:54 | Сообщение # 39
Watching you
Группа: Администраторы
Пользователь №: 2
Сообщений: 1621
Получено оценок: 167
UnderShot, эээ, так это просто функция расширения объекта самой квери, нафиг её аналог для JS?

Бесплатные обои.
  
DSC
Дата: Вторник, 29.06.2010, 12:55 | Сообщение # 40
спикер
Группа: Проверенные
Пользователь №: 127
Сообщений: 516
Получено оценок: 41
Aleko, я с jQ не работал, поэтому я не знаю про всякие эти функции! ^_^
Да и вообще, все шаги начались от моей функции)


aka Latro

Сообщение отредактировал DSC - Вторник, 29.06.2010, 12:58
  
UnderShot
Дата: Вторник, 29.06.2010, 12:57 | Сообщение # 41
оратор
Группа: Модераторы
Пользователь №: 45
Сообщений: 923
Получено оценок: 85
Aleko, ну как-бы я хочу сделать опции для функции
Code
f({a:1,b:'asd'})
А с ифами
Code
function f(a){a.a==1?alert(true):alert(false);a.b&&alert(a.b)};
как-то не прёт.


Очень важная тема!
Filmzona — онлайн фильмы.
  
Aleko
Дата: Вторник, 29.06.2010, 13:02 | Сообщение # 42
Watching you
Группа: Администраторы
Пользователь №: 2
Сообщений: 1621
Получено оценок: 167
Quote (DSC)
Да и вообще, все шаги начались от моей функции)

Блажен кто верует, легко ему на свете.
UnderShot, напиши подробнее, пока не доганяю. что нужно сделать и при чем тут экстенд.


Бесплатные обои.
  
UnderShot
Дата: Вторник, 29.06.2010, 13:10 | Сообщение # 43
оратор
Группа: Модераторы
Пользователь №: 45
Сообщений: 923
Получено оценок: 85
Aleko,
Code
function sad(h){h=$.extend({ab1:'',b2:1,her:'ad'},h)
При вызове функции указываешь параметры, если какой-нить не заполнил, он автоматически заполняется.
Например:
Code
sad({ab1:'test'}) // остальные заполнятся сами

Так вот, мне нужно так сделать без jQuery.


Очень важная тема!
Filmzona — онлайн фильмы.
  
Aleko
Дата: Вторник, 29.06.2010, 13:19 | Сообщение # 44
Watching you
Группа: Администраторы
Пользователь №: 2
Сообщений: 1621
Получено оценок: 167
UnderShot, а чем они должны заполняться? Откуда взялось test? Нахрена это нужно то вообще?))

Code
<script>

function ialert(text){
text = text||"нет текста"
alert(text)
// так что ли?
}

</script>


Бесплатные обои.
  
UnderShot
Дата: Вторник, 29.06.2010, 13:31 | Сообщение # 45
оратор
Группа: Модераторы
Пользователь №: 45
Сообщений: 923
Получено оценок: 85
Quote (Aleko)
а чем
Моей информацией.
Quote (Aleko)
Нахрена
Для функции.
Вот пример без jQ:
Code
<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 стандартные параметры
Code
<script>
addBlock=function(p){
p=$.extend({id:'auto_id',inner:'Auto HTMLCode',bg:'#000'},p);
}
</script>
Можно как-нибудь без ифов и полегче сделать?


Очень важная тема!
Filmzona — онлайн фильмы.
  
Aleko
Дата: Вторник, 29.06.2010, 14:07 | Сообщение # 46
Watching you
Группа: Администраторы
Пользователь №: 2
Сообщений: 1621
Получено оценок: 167
UnderShot, понял. Функция для этого не нужна.

Code
<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)
   }
     
addBlock();
</script>


Бесплатные обои.
  
UnderShot
Дата: Вторник, 29.06.2010, 14:10 | Сообщение # 47
оратор
Группа: Модераторы
Пользователь №: 45
Сообщений: 923
Получено оценок: 85
Aleko, то что надо, спасибо :)

Очень важная тема!
Filmzona — онлайн фильмы.
  
lewonchik
Дата: Вторник, 29.06.2010, 15:01 | Сообщение # 48
молчун
Группа: Проверенные
Пользователь №: 220
Сообщений: 45
Aleko,
Quote (Aleko)
Тот же самый код но без регулярок, фреймворков и никому не нужной функции запуска.
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>
работает везде и даже на подстраницах НО не работает на главной странице сайта, может я что-то не догоняю?


  
Aleko
Дата: Вторник, 29.06.2010, 15:36 | Сообщение # 49
Watching you
Группа: Администраторы
Пользователь №: 2
Сообщений: 1621
Получено оценок: 167
lewonchik, юзай:

Code
<script>
(function(a,b,c){for(c in b)try{with(b[c])parentNode.tagName=='LI'&&className==a&&(className+=' active')}catch(e){}})(location.pathname.split('/')[1]||'home',document.links)
</script>


Бесплатные обои.
  
lewonchik
Дата: Вторник, 29.06.2010, 15:53 | Сообщение # 50
молчун
Группа: Проверенные
Пользователь №: 220
Сообщений: 45
Aleko, а если во внешний файл вынести то что-то добавлять нужно?

  
Форум Studio AD » Сайтостроение » Общий форум по Javascript » Mootools и jQuery
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:
© Studioad.ru 2006 · 2010. Использование материалов форума на сторонних ресурсах без прямой обратной ссылки строго запрещено. Хостинг от uCoz.