Javascript 为页面生成导航并附加到相应的导航项

Javascript 为页面生成导航并附加到相应的导航项,javascript,jquery,html,Javascript,Jquery,Html,目前,我有一个手动更新的导航(这是令人难以置信的痛苦)。我已经做了一些设置,可以根据页面内容创建子导航 问题是,这目前只对一个页面有用,因为我正在显式地检查该页面类。我想不出一种方法,可以使这一点更灵活地适用于所有页面 我正在努力实现的目标: 到目前为止,为实现这一预期效果而编写的代码(请记住,它不是模块化的,并且在这一实例中工作): //创建用于保存节ID的数组 变量$navlinksModule=[]; //查找页面上的每个内容部分 //将其推送到上面创建的数组中 $('.module')

目前,我有一个手动更新的导航(这是令人难以置信的痛苦)。我已经做了一些设置,可以根据页面内容创建子导航

问题是,这目前只对一个页面有用,因为我正在显式地检查该页面类。我想不出一种方法,可以使这一点更灵活地适用于所有页面

我正在努力实现的目标:

到目前为止,为实现这一预期效果而编写的代码(请记住,它不是模块化的,并且在这一实例中工作):

//创建用于保存节ID的数组
变量$navlinksModule=[];
//查找页面上的每个内容部分
//将其推送到上面创建的数组中
$('.module')。每个(函数(){
$navlinksModule.push($(this.attr('id'));
});
//对于数组中的每个项
//创建导航链接
//并将其附加到这个特定的导航中
对于(变量i=0;i<$navlinksModule.length;i++){
$('.cc nav')。追加('
  • '); };
    希望it执行以下操作:

    • 确定其上的页面(每个页面都有一个特定于页面的类)
    • 储存(如有必要?)
    • 检查页面数据,存储导航的ID
    • 找到合适的导航部分
    • 将其应用于导航部分

    谢谢你的帮助

    我认为你的思路是对的。但是,我会将对象存储在数组中,因为听起来您想要的比数组真正容易提供的更多。然后,您可以在整理数组的过程中进行其他测试:

    $('.module').each(function(){
       // create an object...
       var theModule = {};
       theModule.id = $(this).attr('id');
       theModule.text = theModule.id;
       // vague guess, since I don't know how the rest of your markup works...
       // but this is where you'd add a flag that says if this module is the current one
       theModule.isCurrent = $('#divThatHasMyPageIdentifierClass').hasClass(theModule.id);
       // add the object to your array
       $navlinksModule.push(theModule);
    });
    

    您的其他需求更具推测性,我需要更多地了解您的结构,以便更好地了解如何实现这一点。请记住,如果将对象存储在数组中,则必须访问它们的属性以进行比较,而不仅仅是对象。

    这太棒了@jason感谢您的帮助。我不确定物体是否是这里的最佳选择。再说一次,它们往往不是最好的选择。几个问题:module.id不是页面的类名。这就是我被卡住的地方。如果一个页面在这个特定页面上有一个像“childrensclub page”(产品名称)这样的泛型类,但另一个产品页面有“anotherproduct page”,我如何解释这个问题?您是否有一个可以检查的通用类或ID?您可以做的另一件事是使用通配符测试<代码>$('[class*=“-page”]')。attr('class')将获取任何类名包含“-page”的元素的类属性内容。
    $('.module').each(function(){
       // create an object...
       var theModule = {};
       theModule.id = $(this).attr('id');
       theModule.text = theModule.id;
       // vague guess, since I don't know how the rest of your markup works...
       // but this is where you'd add a flag that says if this module is the current one
       theModule.isCurrent = $('#divThatHasMyPageIdentifierClass').hasClass(theModule.id);
       // add the object to your array
       $navlinksModule.push(theModule);
    });