【问题标题】:Wordpress dropdown menu - ajaxify plugin removes class 'current-menu-item' from menu items. Is there a way around this?Wordpress 下拉菜单 - ajaxify 插件从菜单项中删除类“当前菜单项”。有没有解决的办法?
【发布时间】:2015-06-01 13:19:48
【问题描述】:

我正在为客户设置一个 WP 页面。我有一个下拉菜单,主菜单项是一个不可点击的链接,上面写着“菜单”。在每个子页面上,我需要子页面的标题显示它通常(仅在起始页上)显示“菜单”的位置。

我已经能够使用我的主题支持帮助我完成的代码来完成此任务:

(function($){
  var title = '';
  $('.menu-item').each(function(){
    if( $(this).hasClass('current-menu-item')){
      title = $(this).find('span').text();
    }
  });
  if(title){
   $("#menu-item-36 > a span").text(title);
    console.log(title);
  }
})(jQuery); 

#menu-item-36 是主菜单项“MENU”的 ID。

问题是我还需要页面能够顺利加载,而无需在每个页面上重新加载标题。因此,我使用了一个名为 Ajaxify Pro 的插件,它非常适合执行此操作,但 Ajaxify 从活动菜单项中删除了“current-menu-item”类,因此我的代码不再工作。

有没有办法解决这个问题?子菜单中的活动/当前菜单项与菜单中的其他项没有任何不同的类别,所以我正在想办法解决这个问题。

任何帮助将不胜感激!

在这里您可以看到激活了 Ajaxify 并且代码不起作用的页面:http://test.frankochrakel.se/

【问题讨论】:

    标签: javascript jquery wordpress drop-down-menu ajaxify


    【解决方案1】:

    我看到菜单的 ID 总是 menu-item-36 是你的 ID 吗?

    无论如何,我看到选定的菜单有一个 current_page_item 类,所以就这样找到它:

    (function($){
      var title = '';
      title = $('#menu-item-36').find('.current_page_item').text()
      if(title) {
       $("#menu-item-36 > a span").text(title);
        console.log(title);
      }
    })(jQuery); 
    

    【讨论】:

    • 谢谢!正确,菜单的 ID 始终为 menu-item-36。不幸的是,子页面标题现在在菜单顶部显示两次:test.frankochrakel.se
    • 实际看不到,可以试试只上传相关代码到JSFiddle吗?
    • 我更新了代码,但它只有在您重新加载子页面时才有效。例如:test.frankochrakel.se/?page_id=39。无论如何,在这里添加代码:jsfiddle.net/36kh4czq
    • @EmyO.W 是的,每次 ajaxify 加载新页面时,您都需要运行此函数,也许 ajaxify 会公开这样的事件?如果不尝试使用jQuery Detect HTML Change
    猜你喜欢
    • 2014-03-30
    • 2014-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多