如何禁用默认的 “href”的行为属性?

发布于 2024-09-07 18:54:47 字数 645 浏览 3 评论 0原文

我有一个像这样的简单侧边栏:

<div class="sidebar">
   <ul class="nav">
      <li class="Page1"><a href="Page1.html">Page1</a></li>
      <li class="Page2"><a href="Page2.html">Page2</a></li>
      <li class="Page3"><a href="Page3.html">Page3</a></li>
   </ul>
</div>

此代码存在于每个页面上:page1.html、page2.html、page3.html。

在 Page1.html 上,我希望 Page1 不可点击。
在 Page2.html 上,我希望 Page2 不可点击。
在 Page3.html 上,我希望 Page3 不可点击。

是否可以在没有 Javascript(即纯 HTML 和纯 HTML)的情况下做到这一点? CSS? 如果没有,使用 Javascript、jQuery 最简单的方法是什么?

I have a simple sidebar like this:

<div class="sidebar">
   <ul class="nav">
      <li class="Page1"><a href="Page1.html">Page1</a></li>
      <li class="Page2"><a href="Page2.html">Page2</a></li>
      <li class="Page3"><a href="Page3.html">Page3</a></li>
   </ul>
</div>

This code exist on each one of the pages: page1.html, page2.html, page3.html.

On Page1.html, I would like Page1 not to be clickable.
On Page2.html, I would like Page2 not to be clickable.
On Page3.html, I would like Page3 not to be clickable.

Is that possible to do that without Javascript, i.e. pure HTML & CSS ?
If not, what would be the easiest method to do that using Javascript, jQuery ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

写下不归期 2024-09-14 18:54:47

您可以添加

onclick="return false"

要禁用的 标记。

You could add

onclick="return false"

on the <a> tag that you want to disable.

森林迷了鹿 2024-09-14 18:54:47

我实际上建议使用 PHP,因为它可以避免可能的可用性/可访问性问题。

另一个注意事项:无论如何我都不会费心这样做。在我的网站上,我保持所有链接可用 - 标题告诉用户她在哪里,因此禁用链接只会带来麻烦。

不,您需要 JavaScript,但不需要 jQuery。

首先,选择元素:

navlinks = document.querySelectorAll('nav a');

您需要将NodeList转换为Array。使用此函数:

function array(a) {
  var r = []; for (var i = 0; i < a.length; i++)
    r.push(a[i]);
  return r;
}

navlinks = array(navlinks);

然后...调用 forEach 并检查正确的链接,将其禁用:

navlinks.forEach(function(node) {
  if (node.href == location)
    node.addEventListener('click', function(e) { e.preventDefault(); }, false);
});

I'd actually recommend PHP for this, as it avoids possible usability/accessibility problems.

Another note: I wouldn't bother doing this anyway. On my website, I keep all links available - the title tells the user where she is anyway, so disabling links only creates trouble.

No, you need JavaScript, but you don't need jQuery.

Firstly, select the elements:

navlinks = document.querySelectorAll('nav a');

You need to convert the NodeList into an Array. Use this function:

function array(a) {
  var r = []; for (var i = 0; i < a.length; i++)
    r.push(a[i]);
  return r;
}

navlinks = array(navlinks);

Then... call forEach and check for the right link, disabling it:

navlinks.forEach(function(node) {
  if (node.href == location)
    node.addEventListener('click', function(e) { e.preventDefault(); }, false);
});
腹黑女流氓 2024-09-14 18:54:47

如果您想纯粹使用 HTML 和 CSS,则必须为每个页面生成自定义侧边栏。

但是,如果您不介意使用 PHP,那应该不是什么大问题。

If you want to do it purely with HTML and CSS, you have to generate a customized sidebar for each page.

However, if you dont mind using PHP, that shouldnt be much of a problem.

無處可尋 2024-09-14 18:54:47

最好的方法是在服务器端。在伪代码中,看起来像这样

links = [
  "Page1" : "page1.html"
  "Page2" : "page2.html"
  "Page3" : "page3.html"
]

html = ""

for linkTitle, linkUrl of links

  if current_url is linkUrl
    html += "<li>#{linkTitle}</li>"
  else
    html += "<li><a href='#{linkUrl}'>#{linkTitle}</a></li>"

return "<ul>" + html + "</ul>"

The best way to do it would be on the server side. In pseudocode that would look something like this

links = [
  "Page1" : "page1.html"
  "Page2" : "page2.html"
  "Page3" : "page3.html"
]

html = ""

for linkTitle, linkUrl of links

  if current_url is linkUrl
    html += "<li>#{linkTitle}</li>"
  else
    html += "<li><a href='#{linkUrl}'>#{linkTitle}</a></li>"

return "<ul>" + html + "</ul>"
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文