Javascript / jQuery定位问题

时间:2011-04-02 00:44:40

标签: jquery

以下是我的代码中有问题的部分:

$('#chat-bar').prepend('<li id="chat-button-with-'+userid+'"><a href="#">'+username+'</a></li>');

$('#chat').prepend('<div class="chat-box" id="chat-box-with-'+userid+'"></div>');

parentright = $('body').width() - $('#chat-button-with-'+userid).offset().left;

$('#chat-box-with-'+userid).css({right:parentright, bottom:'24px'});

我要做的是将#chat-box-with-n与其各自的按钮一起使用#chat-button-with-n

用户名和用户名等都在此之前设置,所以这不是问题。实际上,在页面加载后,如果我在控制台中将userid设置为3,然后执行:

parentright = $('body').width() - $('#chat-button-with-'+userid).offset().left;

我会得到正确的结果。然而,在添加它之后似乎无法获得此结果。我做错了什么?

如果我把alert(parentright)放在线后,我就会得到身体宽度。所以$('#chat-button-with - '+ userid).offset()。left在那时似乎是0。我是否需要以其他方式做到这一点?

1 个答案:

答案 0 :(得分:1)

这可能不是唯一的问题,但您没有将值类型(px,em等)设置为css函数:

$('#chat-box-with-'+userid).css({right:parentright, bottom:'24px'});

应该是

$('#chat-box-with-'+userid).css({right:parentright+"px", bottom:'24px'});

<强>更新

我无法重现此问题,请查看此示例是否符合您的要求:http://jsfiddle.net/xTrQ9/2/

我没有设置right属性并引入不必要的数学,而是使用left属性。请注意,更改#chat-bar的位置也会更改框的位置,换句话说,两者是垂直对齐的。