I have a div containing a few jquery draggables, however if at any point I remove one of these draggables from the page then this can move the rest of them as they are positioned with relative.
Here is a fiddle showcasing this: http://jsfiddle.net/VolatileStorm/aNk6e/
My proposed solution is that the draggable should be using absolute as opposed to relative positioning, however I can't find a way to do this. Is there a way to do this, and if not, can anyone thin开发者_如何学Gok of a way around it? (For elegance's sake, I won't accept "don't delete the other draggable").
- Add
position:absolute
to your elements. - Attach them to the DOM before calling
.draggable
.
Why doesn't position:absolute
work for you?
Since absolutely positioned elements are no longer part of the document flow, each of your three <div>
s are placed at 0,0
of its containing (positioned) element. Thus, it's up to you to work out the starting position of your draggables.
You can set the position to be absolute by using the jQuery css function when setting an element to be draggable.
$(this).draggable().css("position", "absolute");
Perhaps not the best ideas but... You could position all the relevant divs using positon:relative; and then include a function call in your or $("document").ready(), if you're using jQuery, whic iterates through each of the divs to translate their relative positions into absolute and set them as their left, top before changing them to position:absolute. Only problem here is that you'd want each divs absolute position prior to updating their styles so as not to alter the layout through iteration.
精彩评论