我有一个非常大的 HTML 页面,企业用户在其中显示数千条数据库记录作为批量更新/验证过程的一部分。
在页面中,我需要为许多元素添加工具提示。以前,我们在以下方面使用了可靠的方法来执行此操作<head>
:
$("elementID").mouseenter(function(){
// tool tip logic
// goes here
});
问题是这增加了数万行 JavaScript 并导致大量性能问题。所以,我正在研究在元素级别应用它的差异。因此,我没有为需要工具提示的每个元素使用上述代码,而是声明了一个这样的脚本块:
function ShowTooltip(ctrl, tooltip) {
var o = $(ctrl).offset();
var y = o.top;
var x = o.left;
$("#ttfloat").css({ top: o.top, left: o.left });
$("#ttfloat").html(tooltip);
$("#ttfloat").show();
}
function HideToolTip() {
$("#ttfloat").hide();
}
然后对每个相应的元素使用以下方法触发它:
<div id="ttfloat"> </div>
<p>Tool tip <span id="lbl1" runat="server" onmouseover="ShowTooltip(this, 'Tip Text');" onmouseout="HideToolTip();">appears here</span></p>
问题是当鼠标悬停在<span>
元素上时,工具提示元素会随着浏览器onmouseover
反复触发而闪烁。我在其他 SO 解决方案中读到 JQuery mouseenter 是解决这个问题的方法,但只能找到连接头部事件的示例。它可以在元素中在线完成,还是有更好的方法?该解决方案必须适用于较旧的浏览器并符合标准。