【问题标题】:WordPress jQuery Toggle based on category基于类别的 WordPress jQuery 切换
【发布时间】:2010-03-29 15:39:57
【问题描述】:

我有以下导航:

<li id="categories">
    <ul>
        <li class="cat-item cat-item-8 current-cat"><a href="#">Link</a>
            <ul>
                <li class="cat-item"><a href="#">Link</a></li>
                <li class="cat-item"><a href="#">Link</a></li>
                <li class="cat-item"><a href="#">Link</a></li>
                <li class="cat-item"><a href="#">Link</a></li>
            </ul>
        </li>
        <li class="cat-item cat-item-10"><a href="#">Link</a>
            <ul>
                <li class="cat-item"><a href="#">Link</a></li>
                <li class="cat-item"><a href="#">Link</a></li>
                <li class="cat-item"><a href="#">Link</a></li>
                <li class="cat-item"><a href="#">Link</a>
                    <ul>
                        <li class="cat-item"><a href="#">Link</a></li>
                        <li class="cat-item"><a href="#">Link</a></li>
                        <li class="cat-item"><a href="#">Link</a></li>
                        <li class="cat-item"><a href="#">Link</a></li>
                    </ul>
                </li>
            </ul>
        </li>
    </ul>
</li>

还有下面的JS:

jQuery("#categories li.cat-item").each(function(){
    var item = jQuery("<span>").addClass('plus'),
        that = jQuery(this);

    if ( that.has("ul").length ) {   
        item.click(function(e){
            var self = jQuery(this);
            self.text( self.text() === "+" ? "-" : "+" )
                .parent().next().toggle();
            e.preventDefault();
        }).text('+');

        that.find(".children").hide();
    }

    that.children("a").prepend( item );
});

这为我的类别构建了一个不错的切换菜单。

但是我想要它做的是基于我当前查看的类别显示当用户登陆页面时要打开的相应菜单。 这需要同时适用于帖子和类别。

谢谢。

【问题讨论】:

  • 这需要对帖子和类别都有效。你是什么意思?我没有看到任何与“帖子”相关的内容。

标签: jquery wordpress


【解决方案1】:

把这个放在你的代码后面:

jQuery('#categories .current-cat span.plus:first').click();

模拟点击当前类别中的第一个 plus 符号。

如果你想扩展整个树,只需省略:first

jQuery('#categories .current-cat span.plus').click();

顺便说一句,我尝试时菜单没有崩溃,我不得不将您的代码更改为that.children("ul").hide();

更新:

如果.current-cat 位于子树中的li 元素上,您可以这样做:

jQuery('#categories .current-cat').parents('li:not(#categories)')
                                  .andSelf()
                                  .find('span.plus:first').click();

这会找到每个父 li,包括当前的 liandSelf(),如果它又是子树的根),然后单击每个父 + 登录。

【讨论】:

  • 我怎样才能让它为更深入的导航工作,例如:/category/cat1/subcat1/ 我在 subcat1 上。我也需要它来发帖。谢谢。
  • @Cameron:我更新了我的答案。正如我在我的一个 cmets 中已经说过的那样,我不知道您的“帖子”的目标是什么。我什至不知道它不起作用。您必须为此提供更多信息。不过,我应该不会太难调整选择器。
  • 我想要说我正在查看某个类别中的帖子,然后该类别将在列表中打开。
  • @Cameron:嗯,我不了解 Wordpress 的内部结构,但如果您能识别类别,您可以使用选择器 jQuery('#categories .cuategory-name'),然后使用其余代码。
【解决方案2】:

让 Wordpress 将类别名称插入到父容器上的 ID 中(例如 BODY 标签),然后为打开相应菜单的每个类别/ID 对编写 CSS。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-12
    • 1970-01-01
    • 1970-01-01
    • 2011-07-30
    • 2017-11-20
    • 2016-04-21
    • 1970-01-01
    • 2012-08-30
    相关资源
    最近更新 更多