在Firefox和Chrome中jquery鼠标偏移位置不同

时间:2011-12-09 22:28:12

标签: jquery firefox google-chrome

您好我有一个工具提示我正在使用jquery,它将alt值​​从图像加载到浮动div中,该div由jquery offset()定位。我的代码适用于Chrome / Safari,但不适用于Firefox。

在Chrome中,工具提示会显示在图标上方,该图标位于此项目标签的右侧。 (这也是在一个模态框中完成的,也许这就是问题?

我还是有些新手,请原谅我的代码。

$("img.more_info, div.option_item_wrap label").live('mouseover', function(e) {
    optionIcon = $(this).closest('div').find('img.more_info');
    optionInfoContent = optionIcon.attr('alt');

    if(optionInfoContent != undefined) {
        findImage = $(this).closest('div').find('span.option_item_image');
        $("body").append('<div id="option_info"><p>' + optionInfoContent + '</p><div id="option_info_tail"></div></div>');
        findImage.clone().prependTo('div#option_info p');
        toolTipHeight = $('div#option_info').height();
        findIconPost = optionIcon.offset();
        topPos = findIconPost.top - (toolTipHeight + 20);
        leftPos = findIconPost.left - 80;

        $('div#option_info').css('top', topPos).css('left', leftPos).fadeIn();
    };
}).live('mouseout', function() {
    $('div#option_info').remove();
});

2 个答案:

答案 0 :(得分:1)

由于various reasons,建议不要使用.live功能。尝试使用更典型的方法:

$(document).ready(function() {
    $("img.more_info, div.option_item_wrap label").mouseover(function() {
        // Your code
    });
});

这可能会或可能不会解决您的问题,但如果确实如此,那么您遇到的问题与this question相同。

答案 1 :(得分:0)

    if($.browser.mozilla){
        topPos = findIconPost.top - (toolTipHeight + 90);
    }

这是我能想到的唯一解决方案,我只是调整了firefox的偏移量。