【问题标题】:Jquery Menu problemjQuery 菜单问题
【发布时间】:2010-07-17 01:25:33
【问题描述】:

我刚刚对我刚刚发布的另一个帖子进行了修复,但这又造成了另一个问题。我正在开发具有多个级别的导航菜单。这是我正在使用的脚本:

$(document).ready(function(){

// attach the click handler for the menu
$(".left-navigation-holder li a[href='']:has(~ul)").click(toggleMenu);

// Expand menu for the current page:
var level1Selector = "#" + $("body").attr("menul1");
var level2Selector = "#" + $("body").attr("menul2");
var level3Selector = "#" + $("body").attr("menul3");

 $(".left-navigation-holder li a:has(~ul"+ level1Selector +")").click();
 $(".left-navigation-holder li a:has(~ul"+ level2Selector +")").click();
 $(".left-navigation-holder li a:has(~ul"+ level3Selector +")").click();

});

// menu toggle function
function toggleMenu() {
//if ($(this).attr(href='#')) {alert("yes")} else {alert("no")}
$(this).siblings("ul").toggle();
$(this).closest("li").toggleClass("selected");


 return false;
}

第一行通过说如果在菜单中的一个链接上有一个点击事件并且如果该链接有一个空的 href 属性和一个更下方的列表,那么它会触发 toggleMenu 以打开该级别。检查 href 值的原因是,如果为空,则打开菜单,如果不是,则将用户发送到 URL 值并且不切换菜单。当其他菜单只是在这里切换子菜单时,可以选择为某些菜单(并保留子级别)提供页面链接。

脚本的另一部分读取我在每个页面(menul1、menul2、menul3)的 body 标签中设置的属性值,以了解我们在菜单中的哪个页面,以便菜单打开正确的菜单级别页面加载时。

我遇到的问题是,因为第一行检查 href 属性的值,如果通过单击具有链接和子菜单的菜单调用加载的页面,则加载页面时不会打开该页面因为 href 有一个值。启动每个级别的 3 行现在仅在 href 值为空时起作用。

不知道该怎么办。帮助将不胜感激。我希望这已经足够清楚了。

谢谢!

【问题讨论】:

    标签: jquery menu


    【解决方案1】:

    您似乎想以相同的方式做两件不同的事情 - 您想禁用通过单击链接来切换菜单,但随后您也尝试通过单击它来打开它。

    与其调用click() 来打开当前页面的每个菜单,不如直接调用toggleMenu 吗?

    【讨论】:

    • 我试过了: $(".left-navigation-holder li a:has(~ul"+ level1Selector +")").toggleMenu();它不起作用。我收到一个错误。
    • 好的,我修好了。我添加了一行来启动另一个事件,加载: $(".left-navigation-holder li a:has(~ul)").load(toggleMenu);然后我在检查body中的属性时使用了load()函数:$(".left-navigation-holder li a:has(~ul"+ menuSelector +")").load();
    猜你喜欢
    • 1970-01-01
    • 2021-07-16
    • 1970-01-01
    • 1970-01-01
    • 2012-01-07
    • 2011-04-13
    • 2012-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多