drupal 7 не работает javascript

Главные вкладки

Аватар пользователя DeepHill DeepHill 22 августа 2011 в 14:15

Создал скрипт menu.js

(function($){
$(document).ready(function(){
   $('div#my_menu>ul>li>a').click(function() {
       if ($(this).parent().find('ul').length) {
          $(this).parent().find('ul').slideToggle(200);
          return false;
      }
   });
});
})(jQuery);

Все отлично работало, но добавляю строку (чтобы при клике на нераскрытый пункт меню закрывался тот который уже был раскрыт):

(function($){
$(document).ready(function(){
   $('div#my_menu>ul>li>a').click(function() {
       if ($(this).parent().find('ul').length) {
          $(this).parent().parent().find('li').close();
          $(this).parent().find('ul').slideToggle(200);
          return false;
      }
   });
});
})(jQuery);

И все... не работает! Гугление нечего не дало, подскажите пожалуйста хоть какую сторону копать?

Комментарии

Аватар пользователя DeepHill DeepHill 22 августа 2011 в 14:36

RxB wrote:
"DeepHill" wrote:
Гугление нечего не дало

и не дало мануала по JS в седьмом друпале? Может вы порновидео скачать бесплатно гуглили?

Можно поконкретней я учусь...
мануал по JS в седьмом друпале дал мысль использовать:

(function($){
//
})(jQuery);
Аватар пользователя DeepHill DeepHill 22 августа 2011 в 14:29

Вот само меню:

<div id="my_menu">
<ul><li><a href="#" title="">Услуги юриста по хозяйственным делам</a>
<ul><li><a href="http://www.google.com.ua" title="">Досудебное урегулирование споров</a></li>
<li><a href="http://www.google.com.ua" title="">Взыскание задолженности</a></li>
<li><a href="http://www.google.com.ua" title="">Признание договора недействительным</a></li>
<li><a href="http://www.google.com.ua" title="">Составление,внесение изменений и разрыв договоров</a></li>
<li><a href="http://www.google.com.ua" title="">Обжалование договоров ипотеки</a></li>
<li><a href="http://www.google.com.ua" title="">Защита прав заёмщика</a></li>
<li><a href="http://www.google.com.ua" title="">Урегулирование налоговых споров</a></li>
<li><a href="http://www.google.com.ua" title="">Банкротство</a></li>

</ul></li>
<li><a href="#" title="">Составление юридических документов</a>
<ul><li><a href="http://www.google.com.ua" title="">Составление апелляционной жалобы</a></li>
<li><a href="http://www.google.com.ua" title="">Составление искового заявления (иска)</a></li>
<li><a href="http://www.google.com.ua" title="">Составление кассационной жалобы(кассации)</a></li>
<li><a href="http://www.google.com.ua" title="">Составление запроса (заявления)</a></li>
<li><a href="http://www.google.com.ua" title="">Составление официальных писем, жалоб</a></li>
<li><a href="http://www.google.com.ua" title="">Составление договоров</a></li>
<li><a href="http://www.google.com.ua" title="">Юридические консультации</a></li>

</ul></li>
<li><a href="#" title="">Абонентское юридическое обслуживание</a>
<ul><li><a href="http://www.google.com.ua" title="">Юридический аутсорсинг</a></li>
<li><a href="http://www.google.com.ua" title="">Юридический аудит</a></li>
</ul></li>
</ul></div>

js подключен в template.php строкой:

<?php
drupal_add_js
(drupal_get_path('theme''corporateclean') . '/js/menu.js');
?>
Аватар пользователя v1adimir@drupal.org v1adimir@drupal.org 22 августа 2011 в 19:31

DeepHill wrote:
Vydrin_AP wrote:
"DeepHill" wrote:
$(this).parent().parent().find('li').close();

http://api.jquery.com/?ns0=1&s=close%28%29
Что-то не видать такой функции.

Как же оно раньше работало?

Так в коде, который работает и нет функции close();

"DeepHill" wrote:
Прочитал... но непонял то что мне нужно :-(

Возьми оттуда примеры и используй без понимания. В чем проблема.

Аватар пользователя DeepHill DeepHill 22 августа 2011 в 15:13

О

"DeepHill" wrote:

RxB написал(а):
"DeepHill" написал(а):

Гугление нечего не дало

и не дало мануала по JS в седьмом друпале? Может вы порновидео скачать бесплатно гуглили?


Откуда такая агрессия? Я не смог найти решение своей проблемы сам и задал вопрос на форуме в соответствующем разделе.

Аватар пользователя DeepHill DeepHill 22 августа 2011 в 18:39

Vydrin_AP wrote:
"DeepHill" wrote:
Как же оно раньше работало?
Какую функцию использовать?

Вы вообще читали это?

Прочитал... но непонял то что мне нужно Sad

Аватар пользователя Plazik Plazik 22 августа 2011 в 20:56

"Vydrin_AP" wrote:
А это зачем?


У мну был глюк на северке, не применялись скрипты, это помогло...

М, да, не так прочитал сообщение, увидел "не работает" и все Wacko

Аватар пользователя Alex Bacart Alex Bacart 23 августа 2011 в 8:44

"Cyber" wrote:
eq('')

http://api.jquery.com/eq/
или
http://api.jquery.com/eq-selector/
?
Хотя, он выберет только один li, а ТС видимо хочет обойти все li и закрыть их, только не понятно где у него проверка на то, что найденный li не является текущим. Заместо find() можно еще попробовать http://api.jquery.com/children.

Аватар пользователя Alex Bacart Alex Bacart 23 августа 2011 в 13:13

"RxB" wrote:
Затем что в семёрке jQuery в noconflict() работает

Открыл пару случайных стандартных модулей из 7-ки:

  • modules\color\preview.js
  • modules\color\color.js
  • modules\contextual\contextual.js

Посмотрел код и не заметил ничего отличающегося от 6-ки. Так же все обернуто (function ($) { })(jQuery); и все селекторы начинаются с $().
Может расскажите поподробнее в чем заключается его noconflict()?

Аватар пользователя Виктор Степаньков ака RxB Виктор Степаньк... 23 августа 2011 в 13:17

"Vydrin_AP" wrote:
Так же все обернуто (function ($) { })(jQuery)

Это замыкание, внутри этой функции можно долларом писать.
$('div#id').hide() вне замыкания вызовет ошибку, так (function ($) { $('div#id').hide();})(jQuery) так нет, и обратно, если хочется писать без замыкания, то писать надо jQuery('div#id').hide(). Так же, разработчики jQuery рекомендуют всё писать через замыкания, так как не знаешь в каком режиме будет jQuery, тру-стайл так сказать и кодинг-стандарт

Аватар пользователя KTATTOO KTATTOO 24 августа 2011 в 22:57

RxB wrote:
"Vydrin_AP" wrote:
Так же все обернуто (function ($) { })(jQuery)

Это замыкание, внутри этой функции можно долларом писать.
$('div#id').hide() вне замыкания вызовет ошибку, так (function ($) { $('div#id').hide();})(jQuery) так нет, и обратно, если хочется писать без замыкания, то писать надо jQuery('div#id').hide(). Так же, разработчики jQuery рекомендуют всё писать через замыкания, так как не знаешь в каком режиме будет jQuery, тру-стайл так сказать и кодинг-стандарт

Огромное спасибо за разъяснение!!! Пол дня сегодня потратил на то, что бы запустить скрипт! А заменил и все чудесным образом заработало))))

Аватар пользователя Alex Bacart Alex Bacart 23 августа 2011 в 13:44

Ну вообще-то замыкания noconflict никак не связаны с друпалом в целом и с 7-кой в частности. То, что вы написали узнаешь, когда изучаешь jQuery. Думал, что в 7-ке какие-то особые условия для этого.