我一直在浏览如何在bootstrap popover上加载ajax内容的解决方案,但找不到任何合适的解决方案。
这是我到目前为止所拥有的:
$(".btnCharge").click(function () {
$("#boxPayment").fadeIn();
})
.popover({
title: 'Advantages',
html: 'true',
content: function () {
$.ajax({
type: "POST",
url: "Index.aspx/FindAdvantagesByCCID",
data: '{"id": "' + 1 + '"}',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
var json = jQuery.parseJSON(data.d);
var html = '';
$.each(json, function (i, item) {
html = html + '<a href="#"><i class="icon-ok"></i>' + item.Advantage + '</a><br />';
});
}
});
},
placement: 'bottom',
trigger: 'hover'
});
如何在弹出窗口内容中添加ajax响应?我试过“返回”并且不起作用。
任何干净的解决方案?
答案 0 :(得分:10)
是。有可能的。它已经answered了。
使用data-
属性,您可以提供网址,例如:
<a href="#" title="blabla" data-ajaxload="/test.php">blabla</a>
现在处理程序:
$('*[data-ajaxload]').bind('hover',function(){
var e=$(this);
e.unbind('hover');
$.get(e.data('ajaxload'),function(d){
e.popover({content: d}).popover('show');
});
});
unbind('hover')
阻止多次加载数据,popover()绑定新的悬停事件。如果您希望在每个悬停事件中刷新数据,您应该稍微修改一下。
答案 1 :(得分:0)
您可以直接访问popover选项数据,如下所示:
popoverData = $('.myPopover').data('popover')
因此,您可以执行此操作来更改弹出窗口内容,因为一旦设置它就无法更改。
if (popoverData = $('.myPopover').data('popover'))
{
popoverData.options.content = newContent;
}
$('.myPopover').popover({ content: newContent, html:true, trigger:'hover' }).popover("show");
答案 2 :(得分:0)
你的Html就是这样......
您的循环中存在ID。您将使用此值来检索其他信息(ajax)。
<tbody data-bind="foreach:persons">
<tr>
<td data-bind="text: id"></td>
<td data-bind="text: name"></td>
<td ><span data-bind="popOver: {content : $root.contentData, id: id}"</td>
</tr>
</tbody>
在viewModel中,您有一个变量 - 这个变量最初是空的。
var contentData = ko.observable();
添加自定义绑定处理程序,如:
> ko.bindingHandlers.popOver = {
> init: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
> var value = ko.utils.unwrapObservable(valueAccessor());
>
> var options = {
> placement: 'top',
> title: "Title",
> html: true,
> trigger: 'manual',
> content: value.content
> };
>
> $(element).popover(options);
>
>
>
>
> $(element).click(function () {
> var id = value.id();
> var response = myApp.GetAdditionalData(id);
> value.content(response.content);
>
> $(this).popover('toggle');
> });
> } };
在viewModel之外,你将有一个函数进行ajax调用:
var GetAdditionalDataFromAjax = function (id) {
return { "content": "some content returned by id"};