以下代码适用于Google Chrome和Firefox,但在IE8中无效。我不知道为什么,它是一个工具提示并使用jQuery。这不是我的代码。当您在Chrome或Firefox上运行时,将鼠标悬停在该元素上,工具提示会显示。在IE中,工具提示没有,似乎是悬停声明的问题。
我尝试了一步一步的调试,但是jQuery创建了十几个变量,这使得调试几乎不可能。
这是代码
(function ($) {
$.fn.easyTooltip = function (options) {
// default configuration properties
var defaults = {
xOffset : 10,
yOffset : 45,
tooltipId : "tooltip",
clickRemove : false,
content : "",
useElement : "",
animation : true
};
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");
if (options.animation == true) {
$("#" + options.tooltipId).animate({
marginTop : "12px",
opacity : "show"
}, 400);
} else {
$('#' + options.tooltipId).show();
}
}
}, 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);
知道IE的问题是什么?
答案 0 :(得分:2)
有些时候你使用不透明度值制作任何元素..并且它还有一个你需要在mouseOver中显示的子元素,IE不是子元素。这是我多次遇到的常见错误。我通常做的是保持不透明度不变。那就行了。
这项技术帮了我好几次。试试它是否对你有帮助。