2012-10-15 69 views
0

我遇到菜单和切换子菜单的活动项目时出现问题: 当我点击“Prensa”或“Contacto”时,脚本将活动井添加到菜单项。例如“Prensa”获得主动,如果我点击“Contacto”,它会主动将其从“Prensa”中删除。菜单 - 在ajax加载内容上的子菜单和活动链接

问题是,当我点击“艺术作品”它得到的是主动类,但也从它的子菜单的所有链接。此外,如果我再次点击“Prensa”,“艺术品”的子菜单保持打开状态,“艺术品”的所有链接仍然会获得活动课程(也是“艺术品”链接本身)。

另一个问题是,当我点击一个子菜单项时,它只添加一个“类”而没有其他任何东西,所以我不能添加CSS来使其处于活动状态。

这是我的标记:

 <ul id="menu" class="menu"> 
      <li id="artworks"><a href="#">ARTWORK</a> 
       <ul class="submenu"> 
        <img src="../img/submenu.png" alt="submenu" width="62" height="1" /> 
        <li><a href="#" id="sweetlife">Sweet Life</a></li> 
        <li><a href="#">Pleasure</a></li> 
        <li><a href="#">Bienal de la habana</a></li> 
        <li><a href="#">Estudios de craneos</a></li> 
       </ul> 
      </li> 
      <li id="prensa_nav"><a href="#">PRENSA</a></li> 
      <li id="contacto_nav"><a href="#">CONTACTO</a></li> 
     </ul> 

这是我的JS:

// active menu item 
$(function() { 
    $('#menu li').click(function() { 
     $('#menu li').each(function() { 
      $(this).removeClass('active'); 
     }); 
     $(this).addClass('active'); 
    }); 
}); 


    /* Menu dropdown */ 
    $(document).ready(function($){ 

    // Add class of drop if item has sub-menu 
    $('ul.submenu').closest('li').addClass('drop'); 

    // Left Sidebar Main Navigation 
    var menu_ul = $('.menu > li.drop > ul'), 
     menu_a = $('.menu > li.drop > a'); 

    menu_ul.hide()  

    menu_a.click(function(e) { 
     e.preventDefault(); 
     if(!$(this).hasClass('active')) { 
      menu_a.removeClass('active'); 
      menu_ul.filter(':visible').slideUp('normal'); 
      $(this).addClass('active').next().stop(true,true).slideDown('normal'); 
     } else { 
      $(this).removeClass('active'); 
      $(this).next().stop(true,true).slideUp('normal'); 
     } 
    }); 

}); 

有人可以帮我解决这些问题?

回答

1

你要的风格只有一个活跃的菜单中不是所有的其他孩子的直接孩子。

对于脚本来说,子菜单上的点击被调用两次:一次是在子级上,一次是在父级上。第一次呼叫将该课程设置在孩子身上,但第二次呼叫立即将其删除。 您可以防止jQuery中的点击“传播”​​。

例子:http://jsfiddle.net/willemvb/q96FK/

+0

谢谢,它可以在小提琴上工作,但是当我将它添加到我的loader.js中时,它会在代码的最后一行出现“Unexpected token ILLEGAL”。看起来不错,但仍然有问题,子菜单始终保持打开状态:( – codek

+0

)当您点击另一个菜单时,您希望子菜单关闭吗?我重写了一下您的代码: http://jsfiddle.net/willemvb/q96FK/4/ –

+0

哇,真令人难以置信,那固定了我所有的问题哈哈。非常感谢你!!! – codek

0

您可以使用此代码风格

$(function() { 
    $('#menu li').click(function() { 
     $(".active").removeClass('active'); 
     $(this).addClass('active'); 
    }); 
}); 

$(document).ready(function($){ 

// Add class of drop if item has sub-menu 
$('ul.submenu li:first').addClass('drop'); 
var menu_ul = $('.menu li.drop ul'), 
menu_a = $('.menu li.drop a'); 

问候

+0

它的工作原理,以消除“艺术品”的活动链接,但回落的子菜单始终保持与脚本 – codek

+0

编辑这个代码和使用开放的,其工作真正 –

+0

又试了一次,仍然在子菜单总是打开...从不下拉或切换。 – codek

相关问题