【发布时间】:2012-09-13 11:45:22
【问题描述】:
我在使用属性 contains 选择器和 droppable fundtion 时遇到问题。 我正在搜索 id 包含字符串“dropAble”的 div 元素
$('div[id*="dragAble"]').draggable();
$('div[id*="dropAble"]').droppable(
{
drop: handleDropEvent
}
);
我希望每个元素都对 drop 事件做出反应。我必须这样做,因为我使用的是 JSF,并且因为它替换了我的 div 的初始 id,所以我必须搜索这个子字符串。
drop 事件声明如下:
function handleDropEvent( event, ui ) {
var draggable = ui.draggable;
alert( 'The square with ID "' + draggable.attr('id') + '" was dropped onto me!' );
alert( this );
}
首先,并不是所有这些元素都会对 drop 事件做出反应,只有前两个。此外,“this”始终是最后一个元素,因此它似乎覆盖了其他定义。
dropelement 的 html 部分如下所示:
<t:dataList value="#{bean.list}" var="elem">
<t:htmlTag value="li" styleClass="folder">
<t:div id="dropAble">
...
<:/div>
<t:htmlTag>
拖动元素的html部分如下所示:
<t:dataTable ...>
<t:column ...>
<h:outputText value="#{dok.text} " escape="false" />
<t:div forceId="true" id="dragAble">
Drag
</t:div>
</t:column>
</t:dataTable>
我希望能够确定移动了哪个拖动对象(工作正常)并确定拖动项目的放置位置(这似乎总是最后一个元素)。 由于 init 函数中的 draggable() 调用有效,我不明白为什么它不使用 droppable 函数。
还有其他方法可以做到这一点吗?我做错了什么?
感谢您的任何建议!
【问题讨论】:
-
改用类。
<div class="draggable"> and <div class="droppable">然后在你的 js 中:$(".draggable").draggable(); $(".droppable").droppable(). -
如果我使用类,我如何确定哪个元素被拖动,以及它被拖放到哪个元素?他们看起来不都一样吗?