限制 jQuery.draggable() 的 x 轴拖动长度
Limit x axis drag length for jQuery.draggable()
我正在尝试以像素数量限制我可以拖动元素的距离。我遍历每个子元素,将其添加到总和中并尝试将左侧拖动限制为该数量。
我不能使用父包含,因为可拖动元素实际上并不需要父元素的边界,而是每个选项卡的计算宽度。
这是我目前得到的:
JavaScript
var maxMenuWidth = 0;
$('.tabName').each(function(index, el) {
var menuWidth = $(this).outerWidth();
maxMenuWidth = maxMenuWidth + menuWidth;
});
maxMenuWidth = maxMenuWidth;
console.log(maxMenuWidth);
jQuery("#TabLabels").draggable({
axis: "x",
cursor: "move",
drag: function( event, ui ) {
ui.position.left = Math.min( 0, ui.position.left );
ui.position.left = Math.max( maxMenuWidth, ui.position.left );
}
});
HTML
<div id="TabLabels" class="ui-draggable">
<span class="tabName">Tab 1</span>
<span class="tabName">Tab 2</span>
<span class="tabName">Tab 3</span>
<span class="tabName">Tab 4</span>
</div>
我可以限制右拖,从下面一行:
ui.position.left = Math.min( 0, ui.position.left );
但是下一行,
ui.position.left = Math.max( maxMenuWidth, ui.position.left );
使可拖动元素在 maxMenuWidth 处设置内联样式。
是否有类似 ui.position.right 的东西可以限制右侧的拖动长度?
您应该可以通过以下方式限制它:
drag: function(event, ui) {
var leftPosition = ui.position.left;
if (leftPosition > maxMenuWidth) {
ui.position.left = maxMenuWidth;
}
}
我在 http://codepen.io/anon/pen/bEBOde 设置了一个示例。请注意,我对您的代码进行了一些其他小的调整,例如删除冗余
maxMenuWidth = maxMenuWidth;
$("#TabLabels").draggable({
axis: 'y',
containment: 'children',
delay: 5,
start: function( event, ui ) {
$(this).addClass('my_class');
},
stop: function( event, ui ) {
$(this).removeClass('my_class');
}
})
.my_class{
border: 1px soild #000 !important;
}
我正在尝试以像素数量限制我可以拖动元素的距离。我遍历每个子元素,将其添加到总和中并尝试将左侧拖动限制为该数量。
我不能使用父包含,因为可拖动元素实际上并不需要父元素的边界,而是每个选项卡的计算宽度。
这是我目前得到的:
JavaScript
var maxMenuWidth = 0;
$('.tabName').each(function(index, el) {
var menuWidth = $(this).outerWidth();
maxMenuWidth = maxMenuWidth + menuWidth;
});
maxMenuWidth = maxMenuWidth;
console.log(maxMenuWidth);
jQuery("#TabLabels").draggable({
axis: "x",
cursor: "move",
drag: function( event, ui ) {
ui.position.left = Math.min( 0, ui.position.left );
ui.position.left = Math.max( maxMenuWidth, ui.position.left );
}
});
HTML
<div id="TabLabels" class="ui-draggable">
<span class="tabName">Tab 1</span>
<span class="tabName">Tab 2</span>
<span class="tabName">Tab 3</span>
<span class="tabName">Tab 4</span>
</div>
我可以限制右拖,从下面一行:
ui.position.left = Math.min( 0, ui.position.left );
但是下一行,
ui.position.left = Math.max( maxMenuWidth, ui.position.left );
使可拖动元素在 maxMenuWidth 处设置内联样式。
是否有类似 ui.position.right 的东西可以限制右侧的拖动长度?
您应该可以通过以下方式限制它:
drag: function(event, ui) {
var leftPosition = ui.position.left;
if (leftPosition > maxMenuWidth) {
ui.position.left = maxMenuWidth;
}
}
我在 http://codepen.io/anon/pen/bEBOde 设置了一个示例。请注意,我对您的代码进行了一些其他小的调整,例如删除冗余
maxMenuWidth = maxMenuWidth;
$("#TabLabels").draggable({
axis: 'y',
containment: 'children',
delay: 5,
start: function( event, ui ) {
$(this).addClass('my_class');
},
stop: function( event, ui ) {
$(this).removeClass('my_class');
}
})
.my_class{
border: 1px soild #000 !important;
}