[英]How can I make jQuery's draggable function expand the container?
如果我有这样的标记:
<!-- Other Content -->
<div id="container">
<div class="draggable">
</div>
<div class="draggable">
</div>
</div>
<!-- Other Content -->
当我拖动其中一个可拖动对象时,如何使容器div垂直扩展(我只希望#container能够向下扩展)? 我已经考虑过使用拖动回调,但是必须有一种CSS方式,对吗?
您无法使用CSS执行此操作,因为div#container元素未从可拖动对象触发任何类。
最好的方法是使用回调:
$('.draggable').draggable({
start: function(event, ui) { $('#container').addClass('expand'); },
stop: function(event, ui) { $('#container').removeClass('expand'); }
});
我已经取得了一些进展,但是仍然无法按照我希望的方式进行。
这是我现在使其部分工作的方式(使用上面的标记):
var dragCatch = function(event, ui) {
var containerOffset = $('#container').offset().top;
var containerBottom = containerOffset + $('#container').height();
var componentHeight = $(this).height();
if (event.pageY > containerBottom - componentHeight - 2) {
$('#container').height(event.pageY - containerOffset + componentHeight + 2);
$(this).css('top', event.pageY - containerOffset);
}
};
$(this).each(function() {
$(this).draggable({
grid: [117,1]
,snap: '.draggable'
,snapMode: 'outer'
,containment: '#container'
,drag: dragCatch
})
});
此代码将成功调整#container div的大小,但将停止将.draggable div移动到#container以前结束的位置。 如果我放开,然后再次拖动,则.draggable会再次移动到#container结束的位置,然后即使#container大小继续扩大也将停止。
我得出的结论是,这甚至不可能。 我使用了另一种使用jQuery.resizable的方法来代替它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.