你所有的resize
代碼不會被更新變量x2
。該Draggable
不訪問變量,它有你通過它的值的副本。
您可以更新Draggable
的遏制矩形:
// Presumably you declare and initialize `x2` somewhere
// ...
// Create the Draggable with the initial bounds
$(image).draggable({cursor: 'move', containment: [ 0, 0, x2, 0]});
// Watch for resize
$(window).resize(function() {
// Recalc
x2 = $('#mask').offset().left;
// Update the existing draggable with its new bounds
$(image).draggable("option", "containment", [ 0, 0, x2, 0]);
});
另外,雖然,我想看看這條線在resize
處理:
x2 = $('#mask').offset().left;
大多數的時候,窗口大小不會影響元素的左側座標。它可以是,如果元素是行內或東西,所以它受到的自動換行,或者如果它是由花車周圍移動,或它的位置由一個百分比,或者一些其他的東西定義,但最的時間left
是唯一不會改變的座標。
還要注意的是,如果你創建Draggable
爲定義要能夠拖動它的邊界的元素中的子元素,你可以擺脫resize
處理程序的完全,只是使用的選項containment: "parent"
。
調整窗口後,重新計算是真實的。 但是遏制會帶來錯誤的價值。爲什麼? – john
@john:你的意思是你的原始代碼,還是我上面的例子?我想我解釋了爲什麼你的原始代碼不工作。可拖動的不能訪問'x2'變量,因此不會看到您對其做出的任何更改;您必須顯式更新遏制選項。 –
您的代碼!調整警報大小後,顯示正確的重新計算但包含會有不同的值。或者它只是不會接受新的 – john