Не срабатывает JS в 1.9

#1 19 апреля 2013 в 13:54
Что то не пойму почему, но не работает скроллинг пунктов меню, код добавлен в template.php темы icms 1.9, то есть должно на всех страницах отображаться

код такой
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.1/jquery.min.js" type="text/javascript"></script>
  1.  
  2. <div id="footer">
  3. <script type="text/javascript">
  4. $(document).ready(function(){
  5. //Get our elements for faster access and set overlay width
  6. var div = $('div.sc_menu'),
  7. ul = $('ul.sc_menu'),
  8. ulPadding = 15;
  9.  
  10. //Get menu width
  11. var divWidth = div.width();
  12.  
  13. //Remove scrollbars
  14. div.css({overflow: 'hidden'});
  15.  
  16. //Find last image container
  17. var lastLi = ul.find('li:last-child');
  18.  
  19. //When user move mouse over menu
  20. div.mousemove(function(e){
  21. //As images are loaded ul width increases,
  22. //so we recalculate it each time
  23. var ulWidth = lastLi[0].offsetLeft + lastLi.outerWidth() + ulPadding;
  24. var left = (e.pageX - div.offset().left) * (ulWidth-divWidth) / divWidth;
  25. div.scrollLeft(left);
  26. });
  27. });
  28. </script>
  29. <div class="sc_menu">
  30. <ul class="sc_menu">
  31. <li><a href="#">1<br/>2<br/>3<br/>4<br/>5</a></li>
  32. <li><a href="#">6<br/>7<br/>8<br/>9<br/>10</a></li
  33. </ul>
  34. </div>
  35.  
#2 19 апреля 2013 в 14:03
div.sc_menu {
/* Set it so we could calculate the offsetLeft */
position: relative;
height: 80px;
width: 410px;
overflow: auto;
}
ul.sc_menu {
display: block;
height: 80px;
/* max width here, for users without javascript */
width: 2410px;
padding: 5px 5px 5px 5px;
/* removing default styling */
background: none;
list-style: none;
}
.sc_menu li {
display: block;
float: left;
padding: 0 4px;
line-height: 12px;
}
.sc_menu a {
display: block;
text-decoration: none;
list-style: none;
margin: 0;
}
.sc_menu span {
display: block;
margin-top: 3px;

text-align: center;
font-size: 12px;
color: #fff;
}
.sc_menu a:hover span {
display: block;
}
#3 19 апреля 2013 в 16:27
Gumoff, надо сайт смотреть, код может не работать даже если абсолютно правильно написан.

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.1/jquery.min.js" type="text/javascript"></script>

а это что за чудо?)) — зачем вы грузите старинныую версию jquery, вот скорей всего из-за нее и конфликты. В движке по умолчанию грузится своя версия jquery и она выше, чем ваша.
#4 19 апреля 2013 в 18:46


Gumoff, надо сайт смотреть, код может не работать даже если абсолютно правильно написан.



а это что за чудо?)) — зачем вы грузите старинныую версию jquery, вот скорей всего из-за нее и конфликты. В движке по умолчанию грузится своя версия jquery и она выше, чем ваша.

SJen

Дак скрипт писался под эту версию jquery 1.3, с jquery1.5 не работает, там что то поменялось в функции mouseover
#5 19 апреля 2013 в 18:56
Gumoff, не видя сайт можно только гадать о причине. Самое вероятное — конфликт различных версий jquery. Фаербаг в помощь…
#6 19 апреля 2013 в 19:19


Gumoff, не видя сайт можно только гадать о причине. Самое вероятное — конфликт различных версий jquery. Фаербаг в помощь..

SJen

Светить не хочеца пока не перевел на 1.10, а в хроме как конфликт увидеть не знаешь?
#7 19 апреля 2013 в 19:35
Gumoff, хромом для работы не пользуюсь, так что не подскажу… хром у меня только для серфинга или проверки чего-то. А все дополнения и плагины, которые нужны для работы написаны под фаерфокс.

Есть простой вариант — переименовать либо убрать на время свой файл jquery.js (/includes/jquery/jquery.js — который подгружается движком) и проверить будет ли работать меню. Если будет — то однозначно конфликт версий.
#8 19 апреля 2013 в 19:41


Gumoff, хромом для работы не пользуюсь, так что не подскажу… хром у меня только для серфинга или проверки чего-то. А все дополнения и плагины, которые нужны для работы написаны под фаерфокс.

Есть простой вариант — переименовать либо убрать на время свой файл jquery.js (/includes/jquery/jquery.js — который подгружается движком) и проверить будет ли работать меню. Если будет — то однозначно конфликт версий.

SJen

Блин тоже думаю в эту сторону, щас проверим)
#9 19 апреля 2013 в 19:57
Нет что та все равно не хочет работать придется делать jquery noconflict
#10 19 апреля 2013 в 22:35
а что должно происходить?
по коду у вас скроллинг влево отрицательный…
тут нет несовместимых событий для 1.5.2 — будет работать…
чтобы понять про что говорю:
замените в строке js
  1.  
  2. div.scrollLeft(left);
  3.  
  4. на
  5.  
  6. div.scrollLeft( Math.abs( left ) );
  7.  
и li последний закройте )
#11 20 апреля 2013 в 15:54


а что должно происходить?
по коду у вас скроллинг влево отрицательный…
тут нет несовместимых событий для 1.5.2 — будет работать…
чтобы понять про что говорю:
замените в строке js

  1.  
  2. div.scrollLeft(left);
  3.  
  4. на
  5.  
  6. div.scrollLeft( Math.abs( left ) );
  7.  
и li последний закройте )

• Mike •

Да вы правы • Mike •, всё совместимо, убрал min.js, выставил ul.sc_menu ширину width: 1600px; вместо width: 2410px; стало работать но на длину 1600px, а меню за пределами этого просто скрывает дойдя до 1600px-ной границы.
Да вот об этом скроллинге влево вы и говорите похоже)

Поменял div.scrollLeft(left); на div.scrollLeft( Math.abs( left ) ); ничего не изменилось.
li закрыт конечно
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.