【问题标题】:How to Get Links to Work with JavaScript-Generated Z-index如何获取链接以使用 JavaScript 生成的 Z-index
【发布时间】:2020-02-14 19:27:54
【问题描述】:

我正在重新使用 codepen,但由于 jQuery 生成的 z-index,我遇到了下拉框内的链接无法正常工作的问题。原笔中的代码也不起作用。

我了解 z-index,但在这种情况下,jQuery 代码将 z-index 应用到 10 的包含元素,该元素正在呈现其后面的链接。每次使框可见时,jQuery 也会迭代 z-index(参见代码部分)。

HTML 和 CSS 在 Codepens 中:

1) 原 Codepen:https://codepen.io/candroo/pen/wKEwRL

2) 我的 Codepen:https://codepen.io/Rburrage/pen/PooGKoM?editors=1100

我需要这方面的帮助...谢谢。我觉得我忽略了一些非常简单的事情。

这是我尝试过的:

1) 移除 jQuery z-index 并使用 CSS 添加它

2) 删除所有 jQuery z-index 引用只是为了看看我是否可以让链接正常工作

3) 将链接 (.card-description a) 上的 z-index 更改为比所有其他 z-indexes 更高的数字

4) 阅读 StackOverflow 上的所有 z-index 问题,看看我是否能弄清楚


$jq(document).ready(function () {
  $jq(document).ready(function () {
    var zindex = 10;

    $jq("div.card").click(function (e) {
      e.preventDefault();

      var isShowing = false;

      if ($jq(this).hasClass("show")) {
        isShowing = true
      }

      if ($jq("div.cards").hasClass("showing")) {
        // a card is already in view
        $jq("div.card.show")
          .removeClass("show");

        if (isShowing) {
          // this card was showing - reset the grid
          $jq("div.cards")
            .removeClass("showing");
        } else {
          // this card isn't showing - get in with it
          $jq(this)
            .css({ zIndex: zindex })
            .addClass("show");

        }

        zindex++;

      } else {
        // no cards in view
        $jq("div.cards")
          .addClass("showing");
        $jq(this)
          .css({ zIndex: zindex })
          .addClass("show");

        zindex++;
      }

    });
  });
});

我在控制台中没有看到任何错误消息。为简单起见,我已将所有链接更改为指向 Google。该链接似乎可以点击,但当我点击它时 - 框会折叠,但我没有转到所需的 URL。

【问题讨论】:

  • 它没有打开,因为你在 codepen 中右键单击在新选项卡中打开,你会看到它正在工作
  • 嗨,Evik。感谢你的回复!我已经这样做了——进出codepen。我的开发站点上有代码,当您单击它们时链接不起作用,除非您右键单击并在新选项卡中打开。我需要它们在点击时打开。

标签: jquery css hyperlink z-index


【解决方案1】:

试试这个:

$("div.card").click(function (e) {
  //e.preventDefault();

该行处于活动状态,如果您将其删除或像我的示例中那样对其进行评论,它应该使 url 工作。

不知道为什么它没有注释或什至在那里......也许它是为了原始示例而没有 url 工作或者可能是我缺少的其他东西......

【讨论】:

  • 谢谢你,奥斯瓦尔多。实际上,我之前尝试过——并且链接有效——但是因为我已经删除了 e.preventDefault(),所以单击框打开它会将我带到页面顶部。然后我可以向下滚动并单击框中的链接,它可以工作。知道如何保持 preventDefault() 并仍然使链接正常工作吗?
【解决方案2】:

我投票赞成 Osvaldo,因为他的帖子让我对 prevenDefault() 进行了调查,直到发现了 stopPropagation()。他的评论帮助我解决了这个问题。

我需要另一个函数来定位框内的链接 (.card-description) 并在其上调用 stopPropagation。

$jq(".card-description a").click(function (e) {
  e.stopPropagation();
});

这解决了这个问题。谢谢大家!

【讨论】:

  • 这也是我正在尝试并来到这里说的。很高兴我能在某种意义上帮助你。 :) 顺便说一句,如果有人需要更多信息:medium.com/@jacobwarduk/…
猜你喜欢
  • 2021-04-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-08
  • 1970-01-01
  • 1970-01-01
  • 2011-09-25
相关资源
最近更新 更多