以下是我的代码中有问题的部分:
$('#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。我是否需要以其他方式做到这一点?
答案 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
的位置也会更改框的位置,换句话说,两者是垂直对齐的。