【问题标题】:Bootstrap popover containing html links showing up only one time包含 html 链接的引导弹出窗口仅显示一次
【发布时间】:2020-07-02 11:48:16
【问题描述】:

这是我在这里的第一个问题,我在stackoverflow上搜索过,但无法找到正确的答案。

所以,我实现了一个引导弹出框,其内容仅在第一次点击时显示。 当我第二次打开此弹出窗口时,我的问题发生了:内容没有显示出来。

这里是html代码:

    <a href="#" data-toggle="popover" data-placement="bottom" data-trigger="focus">
        yolo
    </a>

    <div id="clickGoogle" style="display:none;" class="open_modal">
        <a href="javascript:void(0);" data-href="add_banner.php?id=<?php echo $membre['id'];?>" class="openPopup" style="text-decoration: none">Change banner</a><hr>
        <a href="javascript:void(0);" data-href="add_profile.php?id=<?php echo $membre['id'];?>" class="openPopup" style="text-decoration: none">Change avatar</a><hr>
        <a href="javascript:void(0);" data-href="settings.php" class="openPopup" style="text-decoration: none">Edit profile</a>
    </div>

后面是JS代码:

$(function() { 
  $('[data-toggle="popover"]').popover({
      html:true,
      content : function() {
        $('#clickGoogle').css({'display':'block'});
        return $('#clickGoogle');
      }        
    });
});

我不明白为什么当我想再次打开弹出框时 #clickGoogle 没有出现...??

我希望我的解释足够清楚,如果没有,请告诉我!

感谢您对此的帮助;)

<!doctype html>
<head>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script>


<script>
$(function() { 
  $('[data-toggle="popover"]').popover({
      html:true,
      content : function() {
        $('#clickGoogle').css({'display':'block'});
        return $('#clickGoogle');
      }        
    });
});
</script>

</head>
<body>
<a href="#" data-toggle="popover" data-placement="bottom" data-trigger="focus">
  yolo
</a>


<div id="clickGoogle" style="display:none;" class="open_modal">
  <a href="javascript:void(0);" data-href="add_banner.php?id=<?php echo $membre['id'];?>" class="openPopup" style="text-decoration: none">Change banner</a><hr>
  <a href="javascript:void(0);" data-href="add_profile.php?id=<?php echo $membre['id'];?>" class="openPopup" style="text-decoration: none">Change avatar</a><hr>
  <a href="javascript:void(0);" data-href="settings.php" class="openPopup" style="text-decoration: none">Edit profile</a>
</div>
</body>
</html

编辑:

提供的解决方案有效,但同时停用了链接,所以我正在寻找另一个解决方案

【问题讨论】:

  • 嗨,欢迎来到 stackoverflow。您能否将您的代码添加到 sn-p 中,以便我们对其进行测试并查看问题在哪里?如果我们无法复制它,就很难为您提供帮助。编辑问题时,sn-p 是左起第 7 个图标。
  • 完成 ;) 首先尝试我使用的是 sn-p :太棒了!那么你对我的问题有什么想法吗?干杯

标签: javascript twitter-bootstrap hyperlink popover


【解决方案1】:

我不确定为什么,但您的弹出窗口似乎在弹出窗口销毁时从 DOM 中删除了内容元素。由于您通过引用传递您的元素,这可能也是它被删除的原因。

为了解决这个问题,我只是使用 Jquery 函数 html() 而不是元素本身返回了元素的 HTML。

注意这里你不需要再改变css了。

<!doctype html>
<head>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script>


<script>
$(function() { 
  $('[data-toggle="popover"]').popover({
      html:true,
      content : function() {
        return $('#clickGoogle').html();
      }        
    });
});
</script>

</head>
<body>
<a href="#" data-toggle="popover" data-placement="bottom" data-trigger="focus">
  yolo
</a>


<div id="clickGoogle" style="display:none;" class="open_modal">
  <a href="javascript:void(0);" data-href="add_banner.php?id=<?php echo $membre['id'];?>" class="openPopup" style="text-decoration: none">Change banner</a><hr>
  <a href="javascript:void(0);" data-href="add_profile.php?id=<?php echo $membre['id'];?>" class="openPopup" style="text-decoration: none">Change avatar</a><hr>
  <a href="https://google.com/" data-href="settings.php" class="openPopup" style="text-decoration: none">Edit profile</a>
</div>
</body>
</html

【讨论】:

  • 你已经看到了,我已经用你的 html() 函数更正了,现在每次我点击它时都会显示弹出框。但是由于该修改,我出现了另一个问题:链接不再处于活动状态...
  • 好吧,我不确定您的代码是如何工作的,但从您提供的内容来看,每个链接都指向任何内容(href="javascript:void(0)")。您可以尝试将其更改为 href="settings.php"
  • 不,仍然没有......我尝试用一​​个简单的谷歌网址替换,但没有:文本显示但不是链接你不认为它可能与“ style="display:none"??
  • 链接接缝在上面的例子中起作用。显然它不会呈现页面,因为我们在 IFrame 中,但您可以看到它正确更改了 url。您的问题可能出在其他地方,我无能为力。
  • 啊!!我想我有一些东西:“clickGoogle” div 有一个“display:none”样式,我发布的第一个代码是将这个显示修改为“display:block”所以我想我需要一些东西来重新切换显示为弹出框关闭时“无”,你不觉得吗?
猜你喜欢
  • 2017-08-13
  • 1970-01-01
  • 2017-10-15
  • 1970-01-01
  • 1970-01-01
  • 2020-08-01
  • 2016-09-23
  • 1970-01-01
相关资源
最近更新 更多