Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 带手动触发器和选择器选项的引导工具提示_Jquery_Twitter Bootstrap_Twitter Bootstrap 3 - Fatal编程技术网

Jquery 带手动触发器和选择器选项的引导工具提示

Jquery 带手动触发器和选择器选项的引导工具提示,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> &

我有一个动态表,加载了ajax。当我将鼠标悬停在一行上时,我希望显示工具提示,但我希望工具提示显示在某个单元格上(使用class
.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:)。是的,请随时删除。当心