如何在绝对定位的元素上正确定位工具提示?

时间:2014-09-18 14:47:45

标签: javascript jquery css css-position qtip2

我有一堆绝对的图像,我试图根据元素上指定的数据属性来显示工具提示。由于某种原因,工具提示的定位始终是关闭的。我已经加入了一个演示版。有人能发现这个问题吗?



$("div.thing").each(function (i) {
  var objthis = this;
  $(this).qtip({
    show: 'click',
    hide: 'click',
    content: {
      text: 'hey'
    },
    position: {
      corner: {
        tooltip: 'topLeft',
        target: 'topLeft'
      },
      adjust: {
        x: $(objthis).data('left'),
        y: $(objthis).data('top')
      }
    }
  });
});

div#container {
  position: relative;
  width: 100px;
  height: 100px;
  background-color: black;
}

div.thing {
  position: absolute;
  z-index: 1;
  border: 0;
  height: 10px;
  width: 10px;
  top: 50px;
  left: 20px;
  background-color: red;
}

<link href="http://cdn.jsdelivr.net/qtip2/2.2.1/jquery.qtip.min.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="http://cdn.jsdelivr.net/qtip2/2.2.1/jquery.qtip.min.js"></script>
<div id="container">
  <div class="thing" data-top="50" data-left="20"></div>
</div>
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:0)

通过在qtip设置中同时设置offset,您可以将工具提示移离图像太远。尝试删除偏移量:

&#13;
&#13;
$("div.thing").each(function (i) {
  var objthis = this;
  $(this).qtip({
    show: 'click',
    hide: 'click',
    content: {
      text: 'hey'
    },
    position: {
      corner: {
        tooltip: 'topLeft',
        target: 'topLeft'
      },
    }
  });
});
&#13;
div#container {
  position: relative;
  width: 100px;
  height: 100px;
  background-color: black;
}

div.thing {
  position: absolute;
  z-index: 1;
  border: 0;
  height: 10px;
  width: 10px;
  top: 50px;
  left: 20px;
  background-color: red;
}
&#13;
<link href="http://cdn.jsdelivr.net/qtip2/2.2.1/jquery.qtip.min.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="http://cdn.jsdelivr.net/qtip2/2.2.1/jquery.qtip.min.js"></script>
<div id="container">
  <div class="thing" data-top="50" data-left="20"></div>
</div>
&#13;
&#13;
&#13;