Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Нужна помощь. Отзовитесь плз) (https://javascript.ru/forum/misc/12870-nuzhna-pomoshh-otzovites-plz.html)

Theej 06.11.2010 14:36

Нужна помощь. Отзовитесь плз)
 
Доброго времени суток. В общем проблема такова. В меню сайта, когда человек нажимает на категорию, выходят подразделы, он выбирает один из них и переходит по нему. При переходе на подраздел, категория остается открытой. Я хочу, чтобы все категории снова закрывались при любом переходе. Или хотя бы, чтобы при собственно ручном закрытии категория оставалась закрытой (а то при обновлении страницы он снова открывается). Внизу дан пример сайта. Вот код .js файла
/// Accordion menu 
jQuery(document).ready(function(){ 
function createCookie(name,value,days) { 
if (days) { 
var date = new Date(); 
date.setTime(date.getTime()+(days*24*60*60*1000)); 
var expires = "; expires="+date.toGMTString(); 
} 
else expires = ""; 
document.cookie = name+"="+value+expires+"; path=/"; 
} 

function readCookie(name) { 
var nameEQ = name + "="; 
var ca = document.cookie.split(';'); 
for(var i=0;i < ca.length;i++) { 
var c = ca[i]; 
while (c.charAt(0)==' ') c = c.substring(1,c.length); 
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); 
} 
return null; 
} 

var cookier = readCookie("actr"); 
var actr = cookier ? cookier : 0; 
var cookiel = readCookie("actl"); 
var actl = cookiel ? cookiel : 0; 

jQuery(".accordion h3:eq("+actr+")").addClass("active"); 
jQuery(".accordion p:eq("+actr+")").show(); 

jQuery(".accordion h3").click(function(){ 
var index = jQuery(".accordion h3").index(this); 
createCookie("actr", index, 365); 

jQuery(this).next("p").slideToggle("fast") 
.siblings("p:visible").slideUp("fast"); 
jQuery(this).toggleClass("active"); 
jQuery(this).siblings("h3").removeClass("active"); 

}); 

});

Что тут нужно исправить? помогите плз.
Пример меню на сайте 1program.ru (зайдите в любую категорию поймете).

micscr 06.11.2010 14:51

А свои мысли есть?

Theej 06.11.2010 14:55

Я совершенно новичек в этом деле, прошу помощи у более осведомленных людей)

micscr 06.11.2010 15:01

jQuery(".accordion h3").click(function(){
jQuery(this).next("p").slideToggle("fast")
.siblings("p:visible").slideUp("fast");
jQuery(this).toggleClass("active");
jQuery(this).siblings("h3").removeClass("active");

});

- это оставь, а весь остальной код - ненужен.

Theej 06.11.2010 15:08

Оставил, щас вообще меню не работает. Поставил, как было. Есть еще предложения?

micscr 06.11.2010 15:14

Цитата:

Сообщение от Theej (Сообщение 77751)
Оставил, щас вообще меню не работает. Поставил, как было. Есть еще предложения?

что то значит не так сделал.
Вариант попроще(думать совсем не надо):
закомментируй эти две строки:
jQuery(".accordion h3:eq("+actr+")").addClass("active");
jQuery(".accordion p:eq("+actr+")").show();

monolithed 06.11.2010 15:19

Как вариант:

<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<div>
   <dl>
      <dt>Level1</dt>
      <dd>1</dd>
      <dd>2</dd>
      <dd>3</dd>
   </dl>
   <dl>
      <dt>Level2</dt>
      <dd>1</dd>
      <dd>2</dd>
      <dd>3</dd>
   </dl>
</div>

<style type="text/css">
dl {border-bottom: 1px dotted #006B88; width: 100px;}
dt {color: #466780; cursor: pointer; font: bold 16px arial;}
dd {display: none; margin: 0px;}
</style>

<script type="text/javascript">
$(function(){
    $('div').each(function(){
        $(this).find('dt').click(function(){
            $(this).nextUntil('dt').slideToggle('fast');
        });
    });
});
</script>

Theej 06.11.2010 15:28

micscr, все равно, скрипт вообще не реагирует, так же как и если бы его не было)

monolithed, мне нужно именно изменить в моем)

Простой найдите, что нужно убрать, я сам врятли пойму.

monolithed 06.11.2010 15:45

<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<div class="accordion">
    <h3>меню1</h3>
    <p>1</p>
    <h3>меню2</h3>
    <p>2</p>
</div>
<style type="text/css">
.accordion h3 {cursor: pointer;}
.accordion p {display: none;}
</style>

<script type="text/javascript">
$(function(){
     $(".accordion h3").click(function(){
         $(this).next("p").slideToggle("fast").siblings("p:visible").slideUp("fast");
     });
});
</script>

Theej 06.11.2010 15:52

monolithed, вы видимо не поняли чего я хотел . . .


Часовой пояс GMT +3, время: 22:18.