【发布时间】:2017-03-20 01:03:31
【问题描述】:
我有一个问题,我想这样做可以移动 3 div(稍后更多)以在 X 轴上移动 min 和 max 具有相对于容器的位置。 最初效果很好但是当你开始移动分隔符几次时开始出现问题,不尊重最小值或最大值,我想知道是否有人可以帮助我知道可能是什么问题(他们可以在浏览器控制台中检查值根据移动分隔符更新。)https://jsfiddle.net/66un403y/
$( document ).ready(function() {
$(function(){
var A = parseInt($('#A').width()),
B = parseInt($('#B').width()),
C = parseInt($('#C').width()),
minw = parseInt((A + B + C) * 10 / 100), // min 10 percentage
offset = $('#container').offset(),
containw = $('#container').outerWidth(),
splitter_1 = $('#container').outerWidth() / 3;
splitter_2 = (($('#container').outerWidth() / 3) * 2);
$("#min_width").text(minw + "px");
splitter = function(event, ui){
$( '#DragContent' ).unbind( 'draggable' );
A = parseInt(ui.position.left);
B = Math.abs(containw - A - C);
C = containw - A - B;
splitter_1 = ui.position.left;
splitter_2 = splitter_2;
console.log("A:" + A);
console.log("B:" + B);
console.log("C:" + C);
console.log("splitter_1:" + splitter_1);
console.log("splitter_2:" + splitter_2);
console.log("offset.left:"+offset.left);
console.log("ui.position.left:"+ ui.position.left);
console.log("max:"+ (A + B - minw));
console.log("min:"+ ( minw ));
// update the new limits
//$( '#X' ).unbind( 'draggable' );
$( '#X' ).draggable({
containment : [
offset.left + minw,
offset.top,
offset.left + C + B - minw,
offset.top + $('#container').height()
]});
//set widths and information...
$('#A').css({width : A}).children().text("current px: " + A);
$('#B').css({width : B}).children().text("current px: " + B);
$('#C').css({width : C}).children().text("current px: " + C);;
};
splitter2 = function(event, ui){
C = containw - (ui.position.left);
B = Math.abs( ui.position.left - A );//parseInt(ui.position.left) - A - C;
A = containw - (B + C);
splitter_1 = splitter_1;
splitter_2 = ui.position.left;
console.log("A:" + A);
console.log("B:" + B);
console.log("C:" + C);
console.log("splitter_1:" + splitter_1);
console.log("splitter_2:" + splitter_2);
console.log("offset.left:"+offset.left);
console.log("ui.position.left:"+ ui.position.left);
console.log("limite:"+ (containw - minw));
console.log("minimo:"+ ( A + minw ));
// update the new limits
//$( '#X' ).unbind( 'draggable' );
$('#Z').draggable({
containment : [
offset.left + A + minw,
offset.top,
offset.left + containw - minw,
offset.top + $('#container').height()
]});
$('#A').css({width : A}).children().text("current px: " + A);
$('#B').css({width : B}).children().text("current px: " + B );
$('#C').css({width : C}).children().text("current px: " + C );
};
$('#X').draggable({
axis : 'x',
drag : splitter,
containment : [
offset.left + minw,
offset.top,
offset.left + C + B - minw,
offset.top + $('#container').height()
]
});
$('#Z').draggable({
axis : 'x',
drag : splitter2,
containment : [
offset.left + A + minw,
offset.top,
offset.left + containw - minw,
offset.top + $('#container').height()
]
});
//information...
$('#width').text(A + B + C);
$('#A div').text("current px: " + A );
$('#B div').text("current px: " + B );
$('#C div').text("current px: " + C );
console.log();
});
});
【问题讨论】:
-
即使在调整窗口大小时,您的代码也不好。分隔符不合适... :(
-
是的,如果您将窗口放大,请再次按运行。但我希望有人帮助我解决我遇到的问题
-
修复了在拖动结束时将所有内容转换回
%的问题
标签: jquery tree draggable drag