【问题标题】:How to bring a selected (clicked on) bootstrap popover forward when multiple popovers are open?当多个弹出窗口打开时,如何将选定(单击)引导弹出窗口向前移动?
【发布时间】:2014-01-15 20:40:37
【问题描述】:

我在 D3 中的 svg 元素上使用引导弹出框。可以在任何给定时间打开多个弹出窗口。我想知道的是如何在点击后面的弹出框时强制它移动到前面,即被关注?

有没有办法增加单个弹出框的 z-index 以手动将其向前移动?

谢谢。

编辑:

我已经设法使用建议的答案创建了一个小提琴。出现的问题是,使用全局变量,它会在最前面的弹出框上正确增加 z-index,但是在将一个放到前面之后,我无法访问其他的,即甚至单击后面的那些...所以点击处理程序甚至没有被调用。我在想有某种类型的分层正在发生。例如:如果您查看子节点并单击一个(弹出框标题中的链接),然后单击另一个以与第一个打开的节点半重叠 - 单击后面的一个,它将向前移动。单击现在后面的那个,没有任何反应:

jsfiddle.net/Sim1/YME9j/9

除了增加 z-index 以在不妨碍与背后的交互的情况下向前推进弹出框之外,还有其他方法吗?

【问题讨论】:

  • 您可以在点击处理程序中执行此操作。
  • 嗨 Lars,感谢您的评论,您能告诉我如何使用代码增加 z-index 吗?

标签: javascript jquery twitter-bootstrap svg d3.js


【解决方案1】:

您应该可以在 click 处理程序中执行此操作:

element.on("click", function() {
  d3.select(this).attr("z-index", d3.select(this).attr("z-index") + 1);
})

正如@AmeliaBR 指出的那样,如果您有多个弹出窗口,这将不会真正起作用,因为z-index 只会增加一。在这种情况下,您可以有一个全局变量来跟踪最大 z-index 并使用它。

【讨论】:

  • 这会增加 popover 或 svg 元素的 z-index 吗?
  • SVG 元素没有 z-index。您可以像任何随机 XML 属性一样设置该属性,但它不会有任何效果。
  • 我不确定这是否可行——它增加了被点击元素上的z-index,但没有减少其他元素上的它。我会使用一个类来触发 CSS 的 z-index 更改,然后很容易选择当前具有该类的元素并将其删除:element.on("click", function() { d3.select(".popup.onTop").classed("onTop", false); d3.select(this).classed("onTop", true); })。然后 CSS 将为“onTop”类指定一个 z-index。
  • @RobertLongson:如果我对 OP 的理解正确,这些是 SVG 图表上的 HTML 弹出框。
  • @AmeliaBR:您的解决方案肯定更优雅,但只是增加z-index 应该也可以 - 无需减少,您可以继续。
猜你喜欢
  • 2015-04-12
  • 2018-05-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-03
  • 1970-01-01
  • 1970-01-01
  • 2018-04-01
相关资源
最近更新 更多