在 jQuery UI 网站上,它说“默认情况下,可排序项目共享可拖动属性”。我认为这意味着draggable、sortable 所具有的所有事件也应该继承。然而,情况似乎并非如此。我需要像可排序网格的可拖动中的“拖动”事件这样的东西,以便我可以手动更新正在拖动的元素的 x 和 y 值。到目前为止,我已经能够使用 mousemove 事件和一些标志来获取拖动元素的 X 和 Y 值,但我无法获取它以便设置 X 和 Y 值。当我尝试设置这些值时,它们只是在下次触发事件时重置(它可能发生在 mousemove 事件之后)。有人知道有什么方法可以实现这一点吗?
这是我迄今为止尝试过的 fiddle :http://jsfiddle.net/turtlewaxer1100/CUXxn/5/
HTML
<div class="row grid span8">
<div class="well span2 tile">A</div>
<div class="well span2 tile">B</div>
<div class="well span2 tile">C</div>
<div class="well span4 tile">D</div>
</div>
CSS
.placeholder {
border: 1px solid green;
background-color: white;
-webkit-box-shadow: 0px 0px 10px #888;
-moz-box-shadow: 0px 0px 10px #888;
box-shadow: 0px 0px 10px #888;
}
.tile {
height: 100px;
width: 100px;
}
.grid {
margin-top: 1em;
}
JS
var dragging = false;
$(function () {
$(".grid").sortable({
start: dragging = function(e, ui) {
return dragging = true;
},
stop: dragging = function(e, ui) {
return dragging = false;
},
tolerance: 'pointer',
revert: 'invalid',
placeholder: 'span2 well placeholder tile',
forceHelperSize: true,
// Drag doesn't work as an event in sortable.
drag: function()
{
console.log("Drag fired!");
}
});
// My attempt at a custom drag event. (can get values, but can't set them.)
$(document).mousemove(function(e){
if(dragging===true)
{
// Grab the sortable element being moved.
element = $(".ui-sortable-helper");
// Show the current X and Y values. (get reset after manually setting them below)
console.log("before: X: " + element.css("left") + ", Y: " + element.css("top"));
// Change the X and Y values to something arbitrary.
element.css("left",0);
element.css("top",0);
// Show the X and Y values after the change.
console.log("after: X: " + element.css("left") + ", Y: " + element.css("top"));
}
});
});
最佳答案
尝试sort可排序事件。
sort: function(event, ui)
{
console.log("Drag fired!");
ui.helper.css("left",0);
ui.helper.css("top",0);
}
这是您的更新jsfiddle
关于javascript - 如何覆盖 jQuery ui 可排序的拖动事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20429991/