我有以下代码。当我将鼠标悬停在“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>
答案 0 :(得分:2)
这是一个演示代码的jsfiddle。
问题(根据萤火虫)存在于你的脚本中。您引用了未定义的变量“工具提示”。 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)
$("#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>