确定复杂的 - 我已经创建了一些代码来在包装器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乘10,000px),因此我的包装div有overflow:scroll
。
问题是placeddivs
不会停留在相对于container
的一个位置。它们仅相对于wrapper
保持定位。
我已经尝试过使用position:relative
,但随后又将putdivs'堆栈'放在彼此之上(即你不能在第一个上面添加第二个放置的数据)。
有没有人知道解决这个问题?
(PS:我试图创建一个小提琴http://jsfiddle.net/7WQ5Q/20/,但即使我已经从我的本地逐字复制(只是更改div的名称更有意义)它不会工作。从来没有使用过JSFiddle所以我可以做错了什么)
感谢任何帮助!
答案 0 :(得分:7)
一些事情:
看看你的这个工作小提琴(用更干净的代码更新): 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
}));
});
这涵盖了你想要完成的所有事情吗?