【问题标题】:how to disable main menu using javascript in sub pages?如何在子页面中使用 javascript 禁用主菜单?
【发布时间】:2017-07-07 08:20:26
【问题描述】:

我想使用它的 id 禁用子页面中的主菜单项。尝试了“setAttribute”和“disabled”选项。

document.getElementById("bloc_menu:j_id14").setAttribute("disabled","disabled");
document.getElementById("bloc_menu:j_id14").disabled = true;

欢迎提出建议,谢谢。

【问题讨论】:

  • 与不工作的元素bloc_menu:j_id14分享您的演示
  • disabled 属性仅适用于几个元素,所有这些元素都与表单相关。菜单通常不是表单,所以我想知道您的实际 HTML 是什么样的。
  • document.getElementById("bloc_menu:j_id14")是什么类型的元素?我猜它不支持disabled 属性
  • @Rishi
  • @RoryMcCrossan 这是一个列表

标签: javascript jquery html


【解决方案1】:

我仍然不能 100% 确定您要做什么,或者为什么您不能处理这个服务器端,但我已经做了一个可以禁用/启用的简单菜单的小例子。

var $mainMenu, $links;

$(function() {
  $mainMenu = $('#main-menu');
  $links = $mainMenu.find('.menu-item__link').each(function() {
    var $link = $(this);
    $link.data('href', $link.attr('href'));
  });
  $('#toggle-main-menu').on('click', function() {
    toggleMainMenu();
  });
});

function toggleMainMenu() {
  if ($mainMenu.hasClass('disabled')) {
    $mainMenu.removeClass('disabled');
    restoreLinks();
  }
  else {
    $mainMenu.addClass('disabled');
    removeLinks();
  }
}

function removeLinks() {
  $links.removeAttr('href');
}

function restoreLinks() {
  $links.each(function() {
    var $link = $(this);
    $link.attr('href', $link.data('href'));
  });
}
#main-menu .menu-item__link {
  color: #000;
}

#main-menu.disabled .menu-item__link {
  color: #ccc;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul id="main-menu">
  <li class="menu-item">
    <a class="menu-item__link" href="#someLink1">Some link 1</a>
  </li>
  <li class="menu-item">
    <a class="menu-item__link" href="#someLink2">Some link 2</a>
  </li>
  <li class="menu-item">
    <a class="menu-item__link" href="#someLink3">Some link 3</a>
  </li>
</ul>
<button id="toggle-main-menu">Toggle the menu</button>

【讨论】:

  • 对我来说,它使用简单的 code.document.getElementById("bloc_menu:j_id14").style.pointerEvents = 'none';
  • 这只适用于鼠标事件。如果您点击链接并点击键盘上的Enter,您仍然可以触发链接。
  • 通过改变焦点,我们可以做到这一点。谢谢你们的cmets。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多