最近在写前端代码时用到一个很好用的提示框插件
遇到一个问题就是用下面addTipTopLeft方法给一个节点添加提示,提示显示不出来(有时会闪现提示)。但是同样的方法给其它元素添加提示就会显示出来。
//屏幕左上角的提示 function addTipTopLeft(node, tip, color) { var el = 'jmnode[nodeid=' + node + ']'; $(el).on('mouseenter', function (e) { mTips.c.x = -e.pageY + 20; mTips.c.y = -e.pageX + 30; //显示提示 mTips.s(tip, color); }); $(el).on('mouseleave', function (e) { mTips.h(); mTips.c.x = 10; mTips.c.y = 10; }); }
经过一番琢磨后发现,原来是的提示内容太多了,模态框把鼠标悬停的元素遮住,这样鼠标焦点不在目标元素上,自然就无法显示提示了,于是我增加了一个方法,把提示改为右上角显示,这样就提示框就不会覆盖到目标元素,问题也成功解决了。
//屏幕右上的提示 function addTipTopRight(node, tip, color) { var el = 'jmnode[nodeid=' + node + ']'; $(el).on('mouseenter', function (e) { //屏幕宽 var screenWidth = document.body.clientWidth; //屏幕高 var screenHeight = document.body.clientHeight; mTips.c.x = -e.pageY + screenHeight/2; mTips.c.y = -e.pageX + screenWidth/2; //显示提示 mTips.s(tip, color); }); $(el).on('mouseleave', function (e) { mTips.h(); mTips.c.x = 10; mTips.c.y = 10; }); }
果然代码没有玄学啊!