在ajax之后,bootstrap中的工具提示不起作用
the tooltip in bootstrap doesn't work after ajax
我有一个名为index.php的文件,其中包括另一个名为file1.php的文件(在index.php中,我包括所有必要的jQuery, js等文件)。在file1.php中,我有一个带有按钮的表,每个按钮打开一个模态。模态中的信息来自对file2.php的ajax调用。在file2.php中创建一个表。在表格中,我有单元格:
<button class='btn btn-default tooltip-default' data-toggle='tooltip' data-trigger='hover' data-placement='top' data-content='content' data-original-title='Twitter Bootstrap Popover'>AAA</button>
和工具提示不起作用。但是,当我复制它并将其获取到file1.php时,表下面的工具提示确实起作用了。
谁能帮我修复工具提示?Thx .
在body等元素上使用选择器
$('body').tooltip({selector: '[data-toggle="tooltip"]'});
我认为你需要对新到达的数据初始化工具提示,例如
$('[data-toggle="tooltip"]').tooltip();
在DOM操作之后,将此代码放入AJAX成功处理程序中。
您必须将工具提示初始化放在Ajax回调函数中:
$.ajax({
method: "POST",
url: "some.php"
}).done(function( msg ) {
$('[data-toggle="tooltip"]').tooltip();
});
或者
而不是将初始化代码放在每个Ajax回调函数中你可以使用ajaxComplete事件全局实现它:
/* initializate the tooltips after ajax requests, if not already done */
$( document ).ajaxComplete(function( event, request, settings ) {
$('[data-toggle="tooltip"]').not( '[data-original-title]' ).tooltip();
});
这段代码将为每个定义了data-toggle="tooltip"属性但没有"data-original-title"属性(即未初始化的工具提示)的节点初始化工具提示。
我什么都试过了,但都不起作用。因此,当我点击*时,我仔细查看了tooltip,发现每次show .bs.tooltip被触发时,都会出现一个aria- descripbedby属性,并且每次它的值都会改变。
所以,我的方法(它有效)是改变这个动态元素的内容。
我得到了这个代码:
$('body').on('shown.bs.tooltip', function(e) {
var $element = $(e.target);
var url = $element.data('url');
if (undefined === url || url.length === 0) {
return true;
}
var $describedByContent = $('#' + $element.attr('aria-describedby')).find('.tooltip-inner');
if ($element.attr('title').length > 1) {
$describedByContent.html($element.attr('title'));
return true;
}
$.ajax({
url: url,
method: 'GET',
beforeSend: function () {
$element.attr('title', 'Cargando... espere por favor.');
$describedByContent.html($element.attr('title'));
}
}).done(function (data) {
$element.attr('title', JSON.stringify(data));
$describedByContent.html($element.attr('title'));
});
return true;
});
在我的例子中,我的工具提示有一个data-url属性来获取标题的数据。原来的标题是'-',我不希望每次点击*元素都有ajax调用,只是第一次。
对我来说,每次都做ajax是没有用的,因为我不希望数据改变得那么快。
动态创建的元素有一个类为.tooltip-inner的元素,所以我们只需要替换它的内容。
希望这对你有帮助。
*click:我选择click事件是因为默认的悬停有时会使系统变得疯狂,并且show.bs.tooltip永远被触发,在默认值和新值之间切换。
您可以通过以下两种方式之一来实现:
- 您可以编写一个
ajaxComplete
函数,以便每次ajax调用完成后,它都会一次又一次地重新初始化工具提示。当您的大多数页面中都有数据表,并且希望在每次ajax数据表调用后初始化工具提示时,这非常有用:
$(document).ajaxComplete(function() {
$("[data-toggle=tooltip]").tooltip();
});
- 或者你可以在ajax成功回调后调用工具提示函数:
function tool_tip() {
$('[data-toggle="tooltip"]').tooltip()
}
tool_tip(); // Call in document ready for elements already present
$.ajax({
success : function(data) {
tool_tip(); // Call function again for AJAX loaded content
}
})
run
$('#ding_me_tooltip').tooltip('dispose');
$('#ding_me_tooltip').tooltip();
在ajax之后,其中#ding_me_tooltip
是您的选择器
我设置我的工具提示位置如下:
function setUpToolTipHelpers() {
$(".tip-top").tooltip({
placement: 'top'
});
$(".tip-right").tooltip({
placement: 'right'
});
$(".tip-bottom").tooltip({
placement: 'bottom'
});
$(".tip-left").tooltip({
placement: 'left'
});
}
用文档就绪调用初始化它:
$(document).ready(function () {
setUpToolTipHelpers();
});
这样我可以确定工具提示的位置,我只需要使用类和标题来分配提示:
<td class = "tip-top", title = "Some description">name</td>
然后我调用,"setUpToolTipHelpers()"在我的成功ajax函数。或者你也可以在整个函数中调用它。这对我来说似乎很有效。
- 引导程序3.3.4工具提示不起作用
- Jquery工具提示不起作用
- Wordpress和JS工具提示不起作用
- Twitter 引导工具提示不起作用
- 工具提示不起作用谷歌饼图
- $(..).工具提示不起作用,因为 jQuery 1.9.2 由于旧的 jQuery UI 1.8.16 库而不起作用?
- 引导工具提示不起作用
- 隐藏的“选择”元素上的工具提示不起作用
- 基础工具提示不起作用.关于这个主题的任何想法
- 高图表工具提示不起作用
- jquery工具提示不起作用-指定了项和内容
- 标签上的引导工具提示不起作用
- 引导工具提示不起作用
- 引导工具提示不起作用
- 工具提示不起作用
- 为什么我的引导工具提示不起作用
- 图表上的工具提示不起作用
- 为什么这个jQuery工具提示不起作用?
- 在ajax之后,bootstrap中的工具提示不起作用
- jQuery工具提示不起作用