問題是關於插件jquery.pep.js中的constrainTo
選項。jquery.pep.js中的動態拖拽約束
TL博士:我如何動態分配constrainTo
爲任意的jQuery的元素?
示例:在下面的代碼我有嵌套div的:PEP-祖父母> PEP-父> PEP。在初始化$('.pep').pep()
中,我想將constrainTo
分配給pep的「祖父母」元素,即pep-grandparent。由於祖父母大小可以改變,我想要動態分配constrainTo
。
constrainTo
的documented選項是'parent'或數組[top,right,bottom,left]。天真地,我通過了一個原位計算陣列。但是我發現這個分配僅適用於.pep()
的初始化。如果我調整瀏覽器的大小(請注意css中的%width規範 - 動態行爲的技巧),pep仍然受限於舊的constrainTo
。然而,如果constrainTo
碰巧是'父'(即:父 - 母元素),那麼約束確實是動態的。
我試圖讀取source,但我不是一個Javascript忍者,所以不在那裏亂七八糟。
問題1:是否可以將另一個jQuery元素分配給constrainTo
?
問題2:我可以重新分配的(說)拖動initiate
constrainTo
?如果是這樣,我該怎麼做?
問題3:意見邀請了這個技巧的解決方案:設置constrainTo
到false
和處理在拖動initiate/start/move/stop
約束邏輯。我嘗試了這個,它的工作原理,但不知何故,我覺得原生constrainTo
更順利。
注意:我已經在代碼中自由混合了html類和id,但是這個例子很好。
HTML
<div id='pgp1' class='pep-grandparent'>
<div id='pp1' class='pep-parent'>
<div id='p1' class='pep'></div>
</div>
</div>
CSS
.pep-grandparent {
background: white;
height: 400px;
width: 70%;
border: 1px solid black;
}
.pep-parent {
background: blue;
height: 100px;
width: 30%;
}
.pep {
background: red;
height: 50px;
width: 50px;
}
JS
$('.pep').pep({
constrainTo: function(){
var $p = $('#p1'); //pep element
var $pGP = $('#pgp1'); //pep-grandparent element
var top = $pGP.offset()['top'];
var right = $pGP.offset()['left'] + $pGP.width() - $p.width();
var bottom = $pGP.offset()['top'] + $pGP.height() - $p.height();
var left = $pGP.offset()['left'];
return [top, right, bottom, left];
}(),
//**OPTION** constrainTo: 'parent',
useCSSTranslation: false
});