Jquery Accordion Menu не се превърта до етикети за закотвяне

Имам jquery акордеон меню в долния си колонтитул, което работи чудесно, с изключение на факта, че когато се отвори подменюто... страницата не навигира към връзката за котва. Тъй като това е в моя долен колонтитул, аз съм принуден да превъртя надолу, за да видя отвореното подменю. Искам страницата автоматично да се превърта надолу.

Някакви идеи защо това не работи? Опитах също да поставя идентификатора в , но това не проработи.

Моят html:

<ul class="footer-offices">
<li id="#sanfran" class="one"><a href="/bg#sanfran">text</a>
  <ul class="submenu"><li>office info here</li></ul>
</li>
</ul>

Jquery е:

$(document).ready(function(){
$("ul.footer-offices li > a").on("click", function(e){
if($(this).parent().has("ul")) {
  e.preventDefault();  
}
if(!$(this).hasClass("open")) {
  // hide any open menus and remove all other classes
  $("ul.footer-offices li ul").slideUp(350);
  $("ul.footer-offices li a").removeClass("open");

  // open our new menu and add the open class
  $(this).next("ul").slideDown(350);
  $(this).addClass("open");   
}
else if($(this).hasClass("open")) {
  $(this).removeClass("open");
  $(this).next("ul").slideUp(350);
}       
}); });

person Beth    schedule 24.09.2013    source източник
comment
Това е твърде много код за SO въпрос. Предлагам ви да намалите това до 10 реда или по-малко от най-подходящия код.   -  person Justin Morgan    schedule 25.09.2013
comment
Премахнах CSS... не съм сигурен дали е необходимо за отстраняване на неизправности... Не съм сигурен какво мога да изрежа нещо от jquery.   -  person Beth    schedule 25.09.2013


Отговори (2)


Това е тази част:

<li id="#sanfran" class="one">

Този идентификатор трябва да казва само sanfran, без #. # в <a href="/bg#sanfran" показва, че това, което следва, е ID, така че #sanfran е излишно.

Просто трябва да е това:

<li id="sanfran" class="one">

Всичко останало изглежда добре.

person Justin Morgan    schedule 24.09.2013

Това би изглеждало правилно:

<ul class="footer-offices">
  <li id="sanfran" class="one"><a href="/bg#sanfran">San Francisco Headquarters</a>
    <ul class="submenu"><li>office info here</li></ul>
  </li>

  <li id="boston"><a href="/bg#boston">Boston Headquarters</a>
    <ul class="submenu"><li>office info here</li></ul>
  </li>
</ul>

Имахте ли етикет # в идентификационния си номер, който не трябва да е там?

Имате това:

<li id="#sanfran" class="one">

И трябва да е това:

<li id="sanfran" class="one">

АКТУАЛИЗАЦИЯ:

Дали preventDefault във вашия javascript предотвратява прескачането?

if($(this).parent().has("ul")) {
  e.preventDefault();  
}

Какво се случва, ако премахнете тази част от кода?

person Robert F.    schedule 24.09.2013
comment
опа, съжалявам... Поправих това, но страницата все още не скача надолу. - person Beth; 25.09.2013
comment
Страницата на живо ли е? Значи можем да го видим? - person Robert F.; 25.09.2013
comment
Превенцията по подразбиране на вашия javascript причина ли е да не прескача? Виж по-горе. - person Robert F.; 25.09.2013
comment
О, чакай.. Намерих нещо в CSS, което го засягаше. Благодаря за отделеното време Робърт! - person Beth; 25.09.2013
comment
Абсолютно! Благодаря отново! - person Beth; 25.09.2013