我正在尝试使用名为EasyTooltip的jquery插件在光标左侧而不是右侧弹出我的工具提示。
我试图在标题的调用中给出一个负值,其目的是影响x轴定位,但没有效果(没有任何效果,而两个轴中的正值通常都有效):< / p>
<script type="text/javascript">
$(document).ready(function() {
$(".middle img").easyTooltip({
tooltipId: "easyTooltip2",
xOffset: -300,
yOffset: 50
});
});
</script>
我对javascript很新,我认为我必须破解脚本,但我需要你的建议。这是脚本:
/*
* Easy Tooltip 1.0 - jQuery plugin
* written by Alen Grakalic
* http://cssglobe.com/post/4380/easy-tooltip--jquery-plugin
*
* Copyright (c) 2009 Alen Grakalic (http://cssglobe.com)
* Dual licensed under the MIT (MIT-LICENSE.txt)
* and GPL (GPL-LICENSE.txt) licenses.
*
* Built for jQuery library
* http://jquery.com
*
*/
(function($) {
$.fn.easyTooltip = function(options){
// default configuration properties
var defaults = {
xOffset: 10,
yOffset: 20,
tooltipId: "easyTooltip",
clickRemove: false,
content: "",
useElement: ""
};
var options = $.extend(defaults, options);
var content;
this.each(function() {
var title = $(this).attr("title");
$(this).hover(function(e){
content = (options.content != "") ? options.content : title;
content = (options.useElement != "") ? $("#" + options.useElement).html() : content;
$(this).attr("title","");
if (content != "" && content != undefined){
$("body").append("<div id='"+ options.tooltipId +"'>"+ content +"</div>");
$("#" + options.tooltipId)
.css("position","absolute")
.css("top",(e.pageY - options.yOffset) + "px")
.css("left",(e.pageX + options.xOffset) + "px")
.css("display","none")
.fadeIn("fast")
}
},
function(){
$("#" + options.tooltipId).remove();
$(this).attr("title",title);
});
$(this).mousemove(function(e){
$("#" + options.tooltipId)
.css("top",(e.pageY - options.yOffset) + "px")
.css("left",(e.pageX + options.xOffset) + "px")
});
if(options.clickRemove){
$(this).mousedown(function(e){
$("#" + options.tooltipId).remove();
$(this).attr("title",title);
});
}
});
};
})(jQuery);
非常感谢任何意见。 欢呼声,
答案 0 :(得分:3)
实际上只使用像-200这样的值会修复工具提示的左侧,但是当你有更多工具提示内容时会开始引起问题。因此,更好的方法是使用内容确定工具提示宽度,然后调整大小(这里是demo)。你必须稍微改变插件和css:
CSS
#easyTooltip{
padding:5px 10px;
border:1px solid #195fa4;
background:#195fa4 url(bg.gif) repeat-x;
color:#fff;
position: absolute;
top:0;
left: -9999px;
}
脚本:
替换它:
.css("left",(e.pageX + options.xOffset) + "px")
这个(在两个地方)
.css("left",(e.pageX - $('#'+ options.tooltipId).width() - options.xOffset - 20) + "px")
工具提示需要在屏幕外定位,因为如果将其设置为display:none
,则宽度将返回为零。在脚本中,您将从当前鼠标位置减去工具提示的宽度,光标的偏移量和宽度(20)以定位工具提示。
答案 1 :(得分:1)
alert((e.pageX + options.xOffset) + "px")
函数中应用css之后尝试$(this).hover
,由于某种原因它可能会返回NaNpx,否则它可能会以-300从屏幕左侧拍摄工具提示,你试过-1,-10,-100?
parseInt(options.xOffset)
也可以帮助你。
在这里猜测一下,因为在你引用的剧本中它看起来都很好。
答案 2 :(得分:0)
我更改了js,所以它现在可以在窗口大小偏离时改变x轴(但我也删除了一些选项并优化了脚本)
无论如何它可以帮助某人:
/*
* Easy Tooltip 1.0 - jQuery plugin
* written by Alen Grakalic
* adapt from http://cssglobe.com/post/4380/easy-tooltip--jquery-plugin
*
* Copyright (c) 2009 Alen Grakalic (http://cssglobe.com)
* Dual licensed under the MIT (MIT-LICENSE.txt)
* and GPL (GPL-LICENSE.txt) licenses.
*
* Built for jQuery library
* http://jquery.com
*
*
* Renew by Spektrum media http://spektrummedia.com
* Now the tooltip goes to the left when it's out of X scope
*
*/
(function ($) {
$.fn.easyTooltip = function (options) {
// default configuration properties
var defaults = {
xOffset: 10,
yOffset: 35,
tooltipId: "easyTooltip",
content: "",
useElement: ""
};
var options = $.extend(defaults, options);
var content;
this.each(function () {
$(this).hover(function (e) {
content = (options.useElement != "") ? $("#" + options.useElement).html() : content;
if (content != "" && content != undefined) {
var $tooltip = $("<div id='" + options.tooltipId + "'>" + content + "</div>");
$("body").append($tooltip);
if ($(window).width() < (e.pageX + $tooltip.width() + options.xOffset)) {
$tooltip
.css("top", (e.pageY - options.yOffset) + "px")
.css("left", (e.pageX - $tooltip.outerWidth() - options.xOffset) + "px")
.show();
} else {
$tooltip
.css("top", (e.pageY - options.yOffset) + "px")
.css("left", (e.pageX + options.xOffset) + "px")
.show();
}
}
},
function () {
$("#" + options.tooltipId).remove();
});
$(this).mousemove(function (e) {
var $tooltip = $("#" + options.tooltipId);
if ($(window).width() < (e.pageX + $tooltip.width() + options.xOffset)) {
$tooltip
.css("top", (e.pageY - options.yOffset) + "px")
.css("left", (e.pageX - $tooltip.outerWidth() - options.xOffset) + "px")
.show();
} else {
$tooltip
.css("top", (e.pageY - options.yOffset) + "px")
.css("left", (e.pageX + options.xOffset) + "px")
.show();
}
});
});
};
})(jQuery);
不要忘记把它放在你的CSS中:
#easyTooltip
{
position: absolute;
display: none;
}