1

再会!
我尝试使用 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">&nbsp;</td> <td class="cell">&nbsp;</td> <td class="cell">&nbsp;</td> </tr> <tr> <td class="cell">&nbsp;</td> <td class="cell">&nbsp;</td> <td class="cell">&nbsp;</td> </tr> <tr> <td class="cell">&nbsp;</td> <td class="cell">&nbsp;</td> <td class="cell">&nbsp;</td> </tr> </table> <div id="result"></div> <code>

因此,当我拖动时,结果 div 中不仅没有新位置,而且还存在以前的位置!

我怎样才能避免它?

4

0 回答 0