再会!
我尝试使用 jQuery 进行拖放并在它之后读取 DOM。在 drop 函数中,我使用 append() 方法将可拖动对象附加到新位置。但是很可能只有在 drop() 方法完成而不是 append() 方法完成之后,才能从旧位置删除可拖动对象。这可能听起来很奇怪,但这里有一个例子。这是我的javascript:
<code>
$(document).ready(function(){
$('div.drag').draggable({
helper : 'clone',
opacity : 0.3
});
$('td.cell').droppable({
accept : function(draggable){
if($(this).find('.drag').length > 0){
return false;
}
return true;
},
drop : function(event, ui) {
$(this).append(ui.draggable);
$('#myTable').change();
}
});
$('#myTable').change(function() {
var table = document.getElementById('myTable');
var trList = table.getElementsByTagName('tr');
var resultString = '';
for (var i=0; i < trList.length; i++)
{
var tdList = trList[i].getElementsByTagName('td');
for (var j=0; j < tdList.length; j++)
{
if(tdList[j].getElementsByTagName('div').length > 0){
resultString+='row' + i + ' column ' + j + ';';
}
}
}
$('#result').text(resultString);
});
});
<code>
这是我的html片段:
<code>
<div class="drag">drag me</div>
<table id="myTable" border="1" cellpadding="0" cellspacing="0">
<tr>
<td class="cell"> </td>
<td class="cell"> </td>
<td class="cell"> </td>
</tr>
<tr>
<td class="cell"> </td>
<td class="cell"> </td>
<td class="cell"> </td>
</tr>
<tr>
<td class="cell"> </td>
<td class="cell"> </td>
<td class="cell"> </td>
</tr>
</table>
<div id="result"></div>
<code>
因此,当我拖动时,结果 div 中不仅没有新位置,而且还存在以前的位置!
我怎样才能避免它?