2013-08-14 2 views
0

Привет, ive последовал инструкциям с этой страницы Add a Blogger-like collapsible archive block to your Drupal 7 site и удивился, что все кажется «своего рода» работой. Как видно из моего «сворачиваемого блока» справа от THIS PAGE, блок, похоже, не хочет оставаться открытым при просмотре других месяцев. Я не думаю, что это было предполагаемое поведение.Складное меню не оставалось открытым

jQuery(document).ready(function($) { 
    // init: collapse all groups except for the first one 
    $(".view-collapsible-archive ul").each(function(i) { 
     if (i==0) { 
      $(this).siblings("h3").children(".collapse-icon").text("▼"); 
     } else { 
      $(this).hide(); 
     } 
    }); 

    // click event: toggle visibility of group clicked (and update icon) 
    $(".view-collapsible-archive h3").click(function() { 

     var icon = $(this).children(".collapse-icon"); 

     $(this).siblings("ul").slideToggle(function() { 
      (icon.text()=="▼") ? icon.text("►") : icon.text("▼"); 
     }); 
    }); 
}); 

Может ли предложить что-нибудь для меня, чтобы сделать блок меню открыт на месяц при нажатии и закрыть другой «месяц»?

благодаря

+1

Этот сайт ориентирован в сторону вопросы о проблемах, связанных с программной профессии (тестирование , разработка программного обеспечения, структуры данных и т. д.), а не вопросы о технических проблемах с parti фрагмент кода. – apsillers

+0

Не переставляйте этот вопрос при переполнении стека - при необходимости он будет перемещен. –

+0

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

ответ

1

Проблема заключается в том, что код, который вы уже добавили внутри файла http://netmagpie.com/sites/all/themes/feverultra/js/feverultra.js и добавления файла после этого, вы связываете два раза в случае и функция переключает два раза, так что элементы открываются и закрываются

Если вы хотите только один месяц общедоступна, то вы должны закрыть все открытые месяцев до открытия тот, который был щелкнул, что-то вроде:

jQuery(document).ready(function($) { 
    // init: collapse all groups except for the first one 
    $(".view-collapsible-archive ul").each(function(i) { 
     if (i==0) { 
      $(this).siblings("h3").find(".collapse-icon").text("▼"); 
     } else { 
      $(this).hide(); 
     } 
    }); 

    // click event: toggle visibility of group clicked (and update icon) 
    $(".view-collapsible-archive h3").click(function() { 

     $('.view-collapsible-archive ul:visible').not($(this).next('ul')).slideUp(); 

     var icon = $(this).find(".collapse-icon"); 
     $(this).siblings("ul").slideToggle(function() { 
      (icon.text()=="▼") ? icon.text("►") : icon.text("▼"); 
     }); 
    }); 
}); 
+0

спасибо chaps. Я надеялся просто оставить один список меню открытым (один месяц) за раз) I знайте, что это выходит за рамки обсуждения, но все они помогают. спасибо ах только что видел твою обновленную коалу. позвольте мне пойти попробовать ..... –

+0

@RegGordon проверить обновление в ответ –

1

Это из-за этой линии:

$(this).siblings("ul").slideToggle 

Он говорит: «переключать состояние всех ЛУ элементов с использованием слайд-анимации»

Вы хотите изменить это slideDown, когда он скрыт, чтобы показать его и slideUp, когда он виден, чтобы скрыть его.

Я бы предоставил образец кода, но на данный момент я набираю один большой палец на iPhone.

+0

ah brilliant koala dev your spot on. Я сделал это дважды, это была моя поспешность, чтобы попытаться заставить ее работать. Огромное спасибо. –

+0

ooops никогда не собирался публиковать. Он отлично работает сейчас, спасибо Andrew, но я бы предпочел поведение, которое вы описываете. Я не знаю, кому доставить большие пальцы до сих пор :(soz chaps errrrr –

+0

@RegGordon, который является поведением по умолчанию для slideToggle, какое поведение вы хотели бы изменить? Также не обижайтесь, но ответ Эндрю не был нигде рядом с фактической проблемой, код работал нормально –

Смежные вопросы