好的,继续我的冒险这个页面。现在我在我的页面中有这个(现在有些东西是占位符):
$(document).ready(function() {
$(":input")
.focus(function() {
var localOffset = 20;
var hint = $(this).attr("name"); // this is the placeholder part
if(hint !== undefined)
{
$('#form_entry_hint').html(hint);
var pos = $(this).offset();
// I added rounding because it didn't work - but still not working
pos.left = Math.round(pos.left + $(this).width() + localOffset);
pos.top = Math.round(pos.top - 3);
// the following alert is for debugging - it shows the correct values
alert("top: " + pos.top + "; left: " + pos.left);
$('#form_entry_hint').offset(pos); // this is the line that doesn't always work
$('#form_entry_hint').show();
}
})
.blur(function() {
$('#form_entry_hint').hide();
});
});
这在第一个focus
上完全正常。但是在随后的执行中,#form_entry_hint
正在向下和向右放置。虽然调试显示正确的值(286,418),但当它放在.offset(pos)
时,它最终会在(1199,1692) - 或者那里附近的某个地方,每次这些数字都不同 - 但总是出路的地方。
这次我错过了什么? :)
答案 0 :(得分:9)
我通过替换$('#form_entry_hint').offset(pos);
使用:
$('#form_entry_hint').css({ top: pos.top+'px', left: pos.left+'px' });
如果你还没有,你需要将#form_entry_hint
设置为绝对(或相对)。
编辑:感谢Kato的简化。