设置数据内容并显示弹出窗口
Setting data-content and displaying popover
我试图用jquery的ajax从资源中获取数据,然后我试图使用这些数据来填充引导程序弹出窗口,如下所示:
$('.myclass').popover({"trigger": "manual", "html":"true"});
$('.myclass').click(get_data_for_popover_and_display);
检索数据的功能是:
get_data_for_popover_and_display = function() {
var _data = $(this).attr('alt');
$.ajax({
type: 'GET',
url: '/myresource',
data: _data,
dataType: 'html',
success: function(data) {
$(this).attr('data-content', data);
$(this).popover('show');
}
});
}
发生的情况是,当我单击时,popover不会显示,但如果我稍后悬停元素,它将显示popover,但没有内容(data-content
属性(。如果我在success
回调中放入一个alert()
,它将显示返回的数据。
知道为什么会这样吗?谢谢
在成功回调中,this
不再与get_data_for_popover_and_display()
的其余部分绑定到相同的值。
别担心!this
关键字是毛茸茸的;误解其值是JavaScript中常见的错误。
您可以通过将this
的引用分配给一个变量来解决这个问题:
get_data_for_popover_and_display = function() {
var el = $(this);
var _data = el.attr('alt');
$.ajax({
type: 'GET',
url: '/myresource',
data: _data,
dataType: 'html',
success: function(data) {
el.attr('data-content', data);
el.popover('show');
}
});
}
或者,您可以编写var that = this;
并在任何地方使用$(that)
。这里有更多的解决方案和背景。
除了上面的答案之外,不要忘记,根据$.ajax((文档,您可以使用context参数来实现相同的结果,而无需额外的变量声明,例如:
get_data_for_popover_and_display = function() {
$.ajax({
type: 'GET',
url: '/myresource',
data: $(this).attr('alt'),
dataType: 'html',
context: this,
success: function(data) {
$(this).attr('data-content', data);
$(this).popover('show');
}
});
}
相关文章:
- 谷歌地图API-信息窗口显示谷歌位置API信息
- 如何使用 javascript 警报窗口显示验证消息
- 使用模式消息/窗口显示数据库记录
- 单击按钮并将其下载为图像格式时,如何使用引导模式弹出窗口显示D3图表
- 为什么我的html弹出窗口显示我的函数的文本,而不是运行它们
- 如何让角度引导弹出窗口显示字典值
- 当子窗口打开时,父窗口显示为灰色
- 如何检查是否允许弹出窗口显示在客户端的浏览器中
- 同步窗口.显示()
- 简单模式弹出窗口显示每个会话一次
- 谷歌api信息窗口显示在谷歌地图api上的1个标记下
- 单击传单中的标记时,如何防止弹出窗口显示
- 点击警报窗口显示
- 如何使用ajax的Magnific弹出窗口显示测验
- 在弹出窗口打开之前,模式弹出窗口中的Elevate zoom缩放窗口显示在内容后面
- 对溢出的文本进行设置时,角度uib弹出窗口显示在错误的位置
- 你能控制用Javascript创建的窗口显示在哪个显示器上吗
- 在双显示器上复制弹出窗口显示
- 信息窗口显示在同一标记上
- 模式窗口显示得非常简短