Firefox中的HTML位置问题(适用于IE和Chrome)

时间:2012-04-11 16:50:08

标签: javascript jquery asp.net html css

我有以下代码。当我将鼠标悬停在“CODE”上时,它应显示位置100 X100上的div。它在IE和Chrome中运行良好;但是div没有移动到Firefox中的所需位置。需要改变什么才能使其正常工作?

注意:我使用以下代码来定位div

$('#tooltip').css({ left: 100 + "px", top: 100 + "px", position: "absolute" })

- 完整代码 -

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">

<head>

<title>Test</title>

<style type="text/css">

    .tooltip

    {

        background-color: Orange;

        position: absolute;

        border-style: solid;

        border-width: 2px;

        border-bottom: solid 2px black;

    }

</style>

<script src="Scripts/jquery-1.4.1.js" type="text/javascript"></script>

<script type="text/javascript">





    function showDiv(batchId, vendorId) {



        tooltip.style.display = "block";

        batch.innerHTML = batchId;

        vendor.innerHTML = vendorId;

        $('#tooltip').css({ left: 100 + "px", top: 100 + "px", position: "absolute" })

    }



</script>

</head>

<body>

<div>

    <div>

        <table cellspacing="0" rules="all" border="1" id="MainContent_grdTooltip" style="border-collapse: collapse;">

            <tr>

                <th scope="col">MainID</th>

                <th scope="col">SecondID</th>

                <th scope="col">CODE</th>

            </tr>

            <tr>

                <td>101</td>

                <td>999999991</td>

                <td onmouseover="showDiv(101,999999991)">55789</td>

            </tr>

        </table>

    </div>

    <div id="tooltip" class="tooltip">

        <table>

            <tr>

                <td>Main Id:</td>

                <td id="batch"></td>

            </tr>

            <tr>

                <td>Second Id:</td>

                <td id="vendor"></td>

            </tr>

        </table>

    </div>

</div>

</body>

</html>

4 个答案:

答案 0 :(得分:2)

这是一个演示代码的jsfiddle。

http://jsfiddle.net/6GaEA/1/

问题(根据萤火虫)存在于你的脚本中。您引用了未定义的变量“工具提示”。 Chrome和IE似乎吞下了这个错误并继续,而firefox窒息死亡。

改变这个:

 function showDiv(batchId, vendorId) {

    tooltip.style.display = "block";

    batch.innerHTML = batchId;

    vendor.innerHTML = vendorId;

    $('#tooltip').css({ left: 100 + "px", top: 100 + "px", position: "absolute" })

} 

到此:

function showDiv(batchId, vendorId) {

    $('#tooltip').css('display',"block");

    $('#batch').html(batchId);

    $('#vendor').html(vendorId);

    $('#tooltip').css({ left: 100 + "px", top: 100 + "px", position: "absolute" })

}

编辑:我知道jQuery css函数在$(“#tooltip”)上调用两次。我试图尽可能保持相同的代码流:)

答案 1 :(得分:0)

要使“绝对”作为元素的位置,父元素的位置必须设置为relative或absolute。 在你的情况下,向具有onmouseover事件的TD添加css“position:relative”。

答案 2 :(得分:0)

应该以这种方式使用jQuery CSS方法:

$("#something").css(propertyName,value);

以这种方式更好地处理脚本中的事件:

$("#something").mouseover(function() {
    $("#tooltip").css("display","block");
  });

并且为了定位一个元素,它的父元素应该相对定位。

答案 3 :(得分:0)

试试这种方式

                <script type="text/javascript">
            function showDiv(batchId, vendorId) {
                document.getElementById('tooltip').style.display = "block";
                document.getElementById('batch').innerHTML = batchId;
               // batch.innerHTML = batchId;
                document.getElementById('vendor').innerHTML = vendorId;
                //vendor.innerHTML = vendorId;
            }

        </script>