Jquery 带手动触发器和选择器选项的引导工具提示
我有一个动态表,加载了ajax。当我将鼠标悬停在一行上时,我希望显示工具提示,但我希望工具提示显示在某个单元格上(使用classJquery 带手动触发器和选择器选项的引导工具提示,jquery,twitter-bootstrap,twitter-bootstrap-3,Jquery,Twitter Bootstrap,Twitter Bootstrap 3,我有一个动态表,加载了ajax。当我将鼠标悬停在一行上时,我希望显示工具提示,但我希望工具提示显示在某个单元格上(使用class.name),而不是整行上方 另外,使用title函数,我需要能够获得最接近的行id并返回自定义模板 这是我的代码: <table class="table" id="myTable"> <thead> <tr> <th>ID</th> &
.name
),而不是整行上方
另外,使用title函数,我需要能够获得最接近的行id并返回自定义模板
这是我的代码:
<table class="table" id="myTable">
<thead>
<tr>
<th>ID</th>
<th>Name</th>
<th>Country</th>
<th>Statistics</th>
</tr>
</thead>
<tbody>
<tr id="1">
<td >1</td>
<td class="name">Name #1</td>
<td>United States of America</td>
<td>100%</td>
</tr>
<tr id="2">
<td >2</td>
<td class="name">Name #2</td>
<td>United States of America</td>
<td>50%</td>
</tr>
</tbody>
</table>
尝试一次:
$(“#myTable”)
.on('mouseenter focusin','tbody>tr',function(){
$(this.find('td.name')。工具提示('show');
})
.on('mouseleave focusout','tbody>tr',function(){
$(this.find('td.name')。工具提示('hide');
});
第二次尝试:
var-tip;
$(“#我的表格”)
.on('mouseenter focusin','tbody>tr',function(){
tip=$(this.find('.offer name');
提示.工具提示(此处为所有工具提示选项);
提示。工具提示(“显示”);
})
.on('mouseleave focusout','tbody>tr',function(){
提示。工具提示(“隐藏”);
});
但我对这种解决方案的性能感到非常惊讶。所以,问题是如何做到这一点,并做得更好 这里的问题是当
触发器
设置为手动
时,您不能使用选择器
选项。是的,但是你明确地说你将是处理委托的人,所以它是
这意味着我们从使用以下代码进行预初始化中一无所获:
$('.parent')。工具提示({
选择器:'.child',
触发器:“手动”
})
它只是说我想在.child
元素上设置工具提示,但不做任何事情,因为我稍后会处理它
这很好,这就是我们在使用手册时想要做的。当工具提示显示或隐藏时,由我们来决定
让我们看一个简单的例子:
$('#myTable')。在({
“mouseenter”:函数(){
$(this.find('td.name')。工具提示('show');
},
“mouseleave”:函数(){
$(this.find('td.name')。工具提示('hide');
}
},'tbody>tr');
但是,这在这个实例中不起作用,因为我们希望动态生成工具提示。当我们对特定元素调用.tooltip('show')
时,引导程序会查看该元素是否已初始化或是否有标题。上面的例子很有效,因为我已经硬编码了一个标题,但是如果我们想先初始化这个工具提示,我们该如何使用它呢
只需在显示工具提示之前动态初始化,如下所示:
$('#myTable')。在({
“mouseenter”:函数(){
$(this.find('td.name'))
.工具提示({
容器:'主体',
是的,
触发器:“手动”,
标题:函数(){
返回this.parentNode.id;
}
}).工具提示(“显示”);
},
“mouseleave”:函数(){
$(this.find('td.name')。工具提示('hide');
}
},'tbody>tr');
因此,您不会在每次悬停时产生初始化成本,您可以将初始化封装在if语句中,如下所示:
var$cell=$(this.find('td.name');
if(!$cell.data(“bs.tooltip”)){
$cell.tooltip({/*options*/});
}
$cell.tooltip('show');
非常感谢。这正是我所需要的:)。另外,刚刚发现我可以使用$cell.data('bs.tooltip')
检查工具提示是否已初始化。“选择器”上的引导文档非常模糊。我完全忽略了使用tooltip()函数和选项本身动态生成工具提示的可能性。谢谢感谢这段代码,我也可以用它来制作流行音乐。另外,作为提示:我打算在我的进度中使用此代码,而不加归因,因为您似乎是免费提供的。@KyleMit感谢您周到的回复。对我来说,这只是一个麻烦的属性和跟上他们所有。实际上,我通常在源代码中保留一个问题的链接,但通常就是这样。如果我自己理解代码,我可能不会这么做。有一次我问过这件事()。无论如何,我相信你在法律上保留了版权,如果你愿意的话,你可以允许他人使用而无需归属。现在,我假设你不想这样做,这是完全可以接受的。非常感谢@KyleMit。哈,我想我可以看到你一定觉得很有趣,因为数字从95上升到96:)。是的,请随时删除。当心