从 Bootstrap 弹出框访问 div id

Posted

技术标签:

【中文标题】从 Bootstrap 弹出框访问 div id【英文标题】:Access div id from Bootstrap popover 【发布时间】:2018-05-29 23:11:30 【问题描述】:

我设置了一堆 div,它们在悬停时打开一个弹出框。 单击时,这些按钮会打开一个引导模式,其内容取决于启动 div 的 id。到目前为止一切都很好。

但现在我想让弹出框本身可点击并能够启动模式。没关系,但我无法显示模态内容,因为我的 jQuery 脚本无法访问启动 div id。

有什么建议吗?谢谢!

启动 div:

<a class="dev_grid-cell">
<div id="crl0_trl2" class="wrapper" data-container="body" data-toggle="popover" data-placement="top" data-content="Content of the popover">
</div>
</a>

javascript

jQuery(document).on("click", ".popover", function ()
  $("#MMmodal").modal("show");
  $("[data-toggle=popover]").popover("hide");
);

// So far, it's ok: the modal launches.

jQuery(document).on("click", ".popover", function ()
  var divID = this.id; // —> Here is the problem
  var fields = divID.split("_");
  var crl = "#"+fields[0];
  var trl = "#"+fields[1];
  $("#crl").children().hide();
  $("#trl").children().hide();
  $(trl).css("display","block");
  $(crl).css("display","block");
  alert(divID); // —> returns "Undefined" or something like "popover457812"
);

【问题讨论】:

您可以尝试使用shown.bs.popover 事件在弹出框上包含一些数据,告诉它是谁创建的。 【参考方案1】:

试试这样的。没错,使用 $(this) 将引用文档。但 eventObj.target 指的是实际点击的元素。

jQuery(document).on("click", ".popover", function (eventObj)
  var divID = eventObj.target.id; // —> This may fix the problem
  var fields = divID.split("_");
  var crl = "#"+fields[0];
  var trl = "#"+fields[1];
  $("#crl").children().hide();
  $("#trl").children().hide();
  $(trl).css("display","block");
  $(crl).css("display","block");
  alert(divID);
);

【讨论】:

谢谢,但这不起作用。 :-( 警报甚至没有出现。

以上是关于从 Bootstrap 弹出框访问 div id的主要内容,如果未能解决你的问题,请参考以下文章

将 Bootstrap 弹出框添加到特定的 div 元素

如何使用 jQuery 使用 bootstrap 5 弹出框?

Bootstrap iframe 弹出层问题

JS简易弹出层

Bootstrap 3 弹出框在“响应”模式下不起作用

是否可以将 div 用作 Twitter 的 Popover 的内容