这是它的样子;
$( "#box ul li" ).draggable({
helper: "clone"
});
$( ".item" ).draggable({containment: ".door"});
$( ".door" ).droppable({
accept: ":not(.ui-sortable-helper, .item)",
drop: function( event, ui ) {
$( "<div class='item'></div>" ).html(ui.draggable.find("img")).appendTo(this);
}
});
用户拖动$(“#box ul li”)元素并将其放在$(“。door”)元素上。它将它附加到带有$(“。item”)选择器的$(“。door”)元素。
我正在使用jquery UI - Draggable来拖放项目。那里没有问题。
这是实际问题;
但是当你开始拖动元素时,该函数会改变元素的左侧和顶部位置,如; 顶部:10px左:10px 。 但我想将基于百分比的项目拖到包含元素。它应该是 的顶部:10%;左:10%
关于如何做到这一点的任何想法?
答案 0 :(得分:23)
我找到了解决方案;
$( ".item" ).draggable({
containment: ".door",
stop: function( event, ui ) {
$(this).css("left",parseInt($(this).css("left")) / ($(".door").width() / 100)+"%");
$(this).css("top",parseInt($(this).css("top")) / ($(".door").height() / 100)+"%");
}
});
答案 1 :(得分:4)
试用此代码:
$( ".element" ).draggable({
stop: function (){
var l = ( 100 * parseFloat($(this).css("left")) / parseFloat($(this).parent().css("width")) )+ "%" ;
var t = ( 100 * parseFloat($(this).css("top")) / parseFloat($(this).parent().css("height")) )+ "%" ;
$(this).css("left" , l);
$(this).css("top" , t);
}
});
答案 2 :(得分:4)
以上所有内容的更新版本:
$('.element').draggable({
containment: 'parent',
stop: function( event, ui ) {
var $elm = $(this);
var pos = $elm.position(),
parentSizes = {
height: $elm.parent().height(),
width: $elm.parent().width()
};
$elm.css('top', ((pos.top/parentSizes.height) * 100) + '%').css('left', ((pos.left/parentSizes.width) * 100) + '%');
}});