【发布时间】:2011-08-10 15:42:28
【问题描述】:
我正在开发我的第一个 JQuery 项目,但遇到了一些障碍。我正在尝试允许对一组嵌套列表(ul)进行拖放重新排序。除了定位之外,一切都在工作。目标是使可拖动对象相对于光标垂直居中(水平移动受到限制),以便可以轻松删除其中嵌套元素的 li。这是相关的JS:
$(function() {
$( ".organizerlink" ).draggable({ axis: "y",
containment:"#organizer",
scroll: false ,
helper: "original",
revert: "invalid",
cursorAt: { top: Math.round($(this).outerHeight() / 2)}
});
和 HTML:
<ul id="organizer">
<li class="organizerTarget"> </li>
<li class="organizerlink" id="dbid-1">Page
<ul><li class="organizerTarget organizerNewParent"> </li></ul>
</li>
<li class="organizerTarget"> </li>
<li class="organizerlink" id="dbid-2">About
<ul>
<li class='organizerTarget'> </li>
<li class='organizerlink' id="dbid-3">Another Page<ul><li class="organizerTarget organizerNewParent"> </li></ul></li>
<li class='organizerTarget'> </li>
<li class='organizerlink' id="dbid-4">Example<ul><li class="organizerTarget organizerNewParent"> </li></ul></li>
</ul>
</li>
<li class="organizerTarget"> </li>
<li class="organizerlink" id="dbid-27">Stuff
<ul><li class="organizerTarget organizerNewParent"> </li></ul>
</li>
我已经尝试过的一些东西:
- 将 cursorAt 设置为 $(this).height() - 不起作用,我猜 height() 会拉入 css 高度,但它们没有明确定义,所以它会跳转到 0
- 将其设置为 outerHeight() 会在 firebug 中出现错误“elem.style is undefined”
我知道outerHeight元素存在于jquery中,并且基于API doc它似乎可以自动计算,即使CSS未定义,所以我认为这是正确的方法,也许 $(this) 只是寻找它的错误位置。
【问题讨论】:
-
tolerance:"pointer" 在 droppable 函数下为我提供了一个不错的解决方法。
标签: javascript jquery html draggable