我在使用属性 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 函数。
还有另一种方法可以做到这一点吗?我究竟做错了什么?
谢谢任何建议!