我想根据一些用户输入生成手动工具提示。最简单的方法是隐藏所有工具提示,然后显示相关的工具提示。
我已将代码减少到最基本的部分,并且我的工具提示在第二次“显示”后不断消失。
我正在使用 bootstrap 3.3.4 和 jquery 2.1.3
隐藏后立即进行显示是否存在问题,或者我的代码中是否遗漏了某些内容?
<input id="check" type="checkbox">
<script>
var toolTipData = {
placement: 'right',
title: 'Checkmark checked',
trigger: "manual"
};
$('#check').tooltip(toolTipData);
$(document).on('change', '#check', function () {
$('#check').tooltip("hide");
if (document.getElementById("check").checked) {
$('#check').tooltip("show");
}
});
</script>
这是一个jsfiddle:https://jsfiddle.net/bbrally/4b9g0abh/ https://jsfiddle.net/bbrally/4b9g0abh/
在“隐藏”事件发生和“显示”事件发生之间,您遇到了竞争条件。根据文档,“隐藏/显示”事件实际上在“隐藏/显示”事件触发之前返回给调用者。
http://getbootstrap.com/javascript/#tooltips http://getbootstrap.com/javascript/#tooltips向下滚动到工具提示下的“方法”部分
...返回给调用者before工具提示有实际上已经被隐藏了...
...返回给调用者before工具提示有实际上已被展示...
我并不是建议下面的代码是一个解决方案(尽管它可能足够好?),而是对您遇到的情况进行解释。具体来说,250 毫秒的超时值会减慢它的速度,使其按照您的预期工作。
var toolTipData = {
placement: 'right',
title: 'Checkmark checked',
trigger: "manual"
};
$('#check').tooltip(toolTipData);
$(document).on('change', '#check', function () {
$('#check').tooltip("hide");
if (document.getElementById("check").checked) {
setTimeout(function() {
$('#check').tooltip("show");
}, 250);
}
});
希望这可以帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)