首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将活动链接和jquery滑动切换添加到页面重新加载时的自定义ajax wordpress导航

问将活动链接和jquery滑动切换添加到页面重新加载时的自定义ajax wordpress导航
EN

Stack Overflow用户
提问于 2010-11-01 19:33:13
回答 2查看 1.6K关注 0票数 0

我有一个完全无用的wordpress页面,我正在通过wp_nav_menu()在wordpress中添加我的导航。

代码语言:javascript
复制
<?php wp_nav_menu( array( 'container_class' => 'menu-header', 'theme_location' => 'primary' ) ); ?>

Wordpress输出以下html结构:

代码语言:javascript
复制
<div class="menu-header">
 <ul class="menu" id="menu-wordpress-navigation">
  <li class="menu-item menu-item-type-post_type menu-item-1271" id="menu-item-1271">
   <a href="#">Navigation 1</a>
   <ul class="sub-menu" style="display: none;">
    <li class="menu-item menu-item-type-post_type menu-item-1246" id="menu-item-1246"><a href="#">Subnavigation 1</a></li>
   </ul>
  </li>
  <li class="menu-item menu-item-type-post_type menu-item-1275" id="menu-item-1275">
  <a href="#" title="silly">Navigation 2</a>
  </li>
    </ul>
</div>

我的导航用Jquery和下面的代码切换它的子菜单。

代码语言:javascript
复制
   // close all subnavigation
    jQuery('ul.sub-menu').hide();

    // navi toggle
    jQuery('ul.menu li').click(function(){
     jQuery(this).siblings().find("ul.sub-menu").slideUp('normal');
        if (jQuery(this).find('ul.sub-menu').is(':hidden') == true) {
            jQuery(this).find('ul.sub-menu').slideDown('normal');
        }   
    });

到目前一切尚好。一切都很好。

现在我想添加活动的颜色状态,并在整个页面重新加载时向下滑动正确的子导航,但无法真正弄清楚如何为所有元素抓取特定的选择器。你可以在WP后台添加"title“属性,我想我可以这样做:

代码语言:javascript
复制
if (url.indexOf("/navigation1/subnavigation1/") != -1) {
    if(jQuery('ul ul.menu li a').attr('title') == "subnavigation 1 title"){ 
     jQuery(this).slideDown('normal');
    }
   }

如果无法为子导航1指定唯一的ID或类,如何设置活动字体颜色或向下滑动??

提前感谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-11-02 22:52:46

我不确定我是否完全理解了这里的问题,但属性选择器可能是一个很好的起点:

代码语言:javascript
复制
a[title="foobar"] { ... }

这样你就可以这样做了:

代码语言:javascript
复制
body#currently_active_section a[title="currently_active_section"] { 
    /* styling rules for active navigation element go here */
}

您还可以将属性选择器与jQuery一起使用:

代码语言:javascript
复制
$('a[title="foobar"]')

这样一来,它甚至可以在IE6中工作。更不用说在处理这类问题时,jQuery还有无数的其他选择器可以派上用场:http://api.jquery.com/category/selectors。

希望能有所帮助,

西蒙

票数 1
EN

Stack Overflow用户

发布于 2010-11-03 18:56:49

非常感谢西蒙。使用属性选择器解决了我的问题:

代码语言:javascript
复制
if (url.indexOf("/navigation1/subnavigation1/") != -1) {
jQuery('a[title="subnavigation1"]').parents().slideDown('normal');              
jQuery('a[title="subnavigation1"]').addClass('active');
}

}

因此,每当我在浏览器url (var url)中的散列历史记录包含"subnavigation1“时,标题属性为"subnavigation1”的元素就会显示为活动状态。

在导航切换中,我添加了:

代码语言:javascript
复制
jQuery('ul.menu li').click(function(){    
        // remove active class
        jQuery('a').removeClass('active');
 });

...to每次单击导航元素时都会移除活动类。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4068484

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档