Варианты реализации tooltip. В примере реализована два варианта tooltip. Первый вариант реализуется стандартными средствами html, второй средствами JS.
Код
<html>
<head>
<style>
.tooltip-ellipse
{
border: solid 1px black;
height: 20px;
width: 120px;
text-overflow: ellipsis;
overflow: hidden;
white-space: nowrap;
}
</style>
</head>
<body>
<br><br>
<div class="tooltip-ellipse" id='item'>long text long text long text long text long text</div>
<br>
<div class="tooltip-ellipse" id='item2'>short text</div>
<br>
<button id="swap">swap</button>
<button id="enab">title html enabled</button>
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<script>
var isJs = false;
function updatetip() {
if (isJs) {
$(".tooltip-ellipse").each(function() {
var el = $(this);
el.removeAttr('title');
});
$(document).on('mouseenter','.tooltip-ellipse',function() {
var el = $(this);
if (this.offsetWidth < this.scrollWidth)
el.attr('title', el.text());
else
el.removeAttr('title');
});
} else {
$(document).off('mouseenter','.tooltip-ellipse');
$('.tooltip-ellipse').each(function() {
var el = $(this);
if (this.offsetWidth < this.scrollWidth)
el.attr('title', el.text());
else
el.removeAttr('title');
});
}
}
updatetip();
$(document).on("click","#swap",function(){
var t1 = $("#item").text();
var t2 = $("#item2").text();
$("#item").text(t2);
$("#item2").text(t1);
if (isJs == false) {
updatetip();
}
});
$(document).on('click','#enab',function() {
isJs = !isJs;
updatetip();
});
</script>
</body>
</html>
Данный вопрос поднимался, когда встала задача о необходимо отображения tooltip через Vaadin. В результате оказалось, что в Vaadin нет возможности отображает всплывающую подсказку, когда часть содержимого элемента скрыто. По крайней мере решение на этот момент найти не удалось. Проблема актуальна до версии Vaddin 8, в более новых версиях решение возможно есть. В Vaadin элемент отвечающий за отображение tooltip находится на странице и найти его просто по коду:
Код
<div class="v-tooltip" role="tooltip" aria-live="assertive" aria-relevant="additions" style="margin-left: 0px; margin-top: 0px; left: -5000px; top: -5000px; z-index: 20001; visibility: visible; position: absolute; overflow: visible;"><div class="popupContent"><div style=""><div class="v-errormessage" aria-hidden="true" style="display: none;"><div class="gwt-HTML"> </div></div><div class="v-tooltip-text"></div></div></div></div>
Поэтому для решения проблема код из примера выше чуть чуть был переделан чтобы решать существующую задачу
Код
$(document).on('mouseenter','.tooltip-ellipse',function() {
$('#v-tooltip-text').text($(this).text());
});