>确定复杂的一个 - 我创建了一些代码来在包装器div 中附加一个div:
$("#container").click(function(e){
var parentOffset = $(this).parent().offset();
var relX = e.pageX - parentOffset.left;
var relY = e.pageY - parentOffset.top;
$('#container').append('<div class="placeddiv" style="left:' + relX + '; top:' + relY +';"></div>');
如果placeddiv
设置为position: absolute;
,则此方法正常工作
但是,我的container
div 故意很大(10,000px x 10,000px),因此我的包装器divoverflow:scroll
.
问题是placeddivs
不要停留在相对于container
的一个位置。它们仅相对于wrapper
保持位置。
我尝试使用position:relative
但随后放置的div"堆叠"在彼此之上(即您不能在第一个上方添加第二个放置的ddiv)。
有谁知道解决这个问题的方法?
(PS:我试图创建一个小提琴 http://jsfiddle.net/7WQ5Q/20/但即使我从我的本地逐字复制(只是更改了div 的名称以使其更有意义),它也不起作用。以前从未使用过JSFiddle,所以我可能做错了什么)
任何帮助不胜感激!
几件事:
- 有一个JS错别字
- 如果要像这样设置位置,则需要指定 px。
- 您的容器需要具有位置:相对
- 您需要自己考虑滚动
看看这个从你的分叉的工作小提琴(用更干净的代码更新): http://jsfiddle.net/wWEqP/5/
$("#container").click(function(e){
var wrapper = $(this).parent();
var parentOffset = wrapper.offset();
var relX = e.pageX - parentOffset.left + wrapper.scrollLeft();
var relY = e.pageY - parentOffset.top + wrapper.scrollTop();
$(this).append($('<div/>').addClass('placeddiv').css({
left: relX,
top: relY
}));
});
这是否涵盖了您要完成的所有内容?