gpt4 book ai didi

javascript - .data ('bs.popover' )返回未定义

转载 作者:行者123 更新时间:2023-12-01 02:13:41 31 4
gpt4 key购买 nike

我正在将应用程序从 angular.js 迁移到 Angular 5..应用程序正在使用 bootstrap 主题,该主题使用 bootstrap v3.3.7。我复制了每个 cssscript ,奇怪的是 popover (用户下拉列表)不再在新应用程序中工作。我正在尝试调试它,发现问题是 $('[data-toggle="popover"]').data("bs.popover") is undefined.

$(document).on("click", '[data-toggle="popover"]', function (o) {
o.stopPropagation(),
$('[data-toggle="popover"]')
.data("bs.popover")
.tip()
.hasClass("in") ? (
$('[data-toggle="popover"]').popover("hide"),
$(document).off("click.app.popover")
) : (
$('[data-toggle="popover"]').popover("show"),
setTimeout(function () {
$(document).one("click.app.popover", function () {
$('[data-toggle="popover"]').popover("hide")
})
}, 1)
)
})

还有我的 html:

<ul class="nav navbar-nav">
...
<li>
<button data-toggle="popover" data-original-title="" title="">
<img class="img" src="assets/images/img-1.jpg">
</button>
</li>
</ul>

当点击button[data-toggle="popover"]时,应该显示下面的html:

<ul class="nav navbar-nav hidden">
<li>
<a href="#/profile">
<span class="profile-link"></span> Profile
</a>
</li>
...
</ul>

有什么想法吗?

最佳答案

这是undefined因为你没有bs.popover作为 html 中的数据属性它正在尝试读取 data-bs.popover不存在的

如果您有<div data-foo="bar"></div>然后$('div').data('foo')将输出bar

https://api.jquery.com/data/

The .data() method allows us to attach data of any type to DOM elements in a way that is safe from circular references and therefore from memory leaks.

显示ul里面popover你需要把它放在 data-content 中属性并添加 data-html="true"让弹出窗口知道它正在显示 html ,

我不知道你想用这些做什么 .data() .tip() .hasClass() ...等等,当你可以将其替换为 $().popover() 时,这是一个工作 popover :

$('[data-toggle="popover"]').popover();


/*

// this will work too

$(document).on("click", '[data-toggle="popover"]', function (o) {
o.stopPropagation(),
$('[data-toggle="popover"]')
.hasClass("in") ? (
$('[data-toggle="popover"]').popover("hide"),
$(document).off("click.app.popover")
) : (
$('[data-toggle="popover"]').popover("show"),
setTimeout(function () {
$(document).one("click.app.popover", function () {
$('[data-toggle="popover"]').popover("hide")
})
}, 1)
)
})
*/
button{
border: none;
background: none;
margin-top: 10px;
margin-left: 10px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/>
<ul class="nav navbar-nav">
<li>
<button
data-toggle="popover"
data-original-title=""
title=""
data-html="true"
data-content='<ul class="nav navbar-nav"><li><a href="#/profile"><span class="profile-link"></span> Profile</a></li></ul>'>
<img class="img" src="https://loremflickr.com/100/100">
</button>
</li>
</ul>

关于javascript - .data ('bs.popover' )返回未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49590380/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com