jquery未捕获类型错误:无法读取属性';选项';未定义(已编辑)的定义

jquery未捕获类型错误:无法读取属性';选项';未定义(已编辑)的定义,jquery,function,return,draggable,droppable,Jquery,Function,Return,Draggable,Droppable,我做了一个简单的拖放测试函数。当然,除了Internet Explorer之外,一切都很好。在Chrome控制台中,我遇到以下错误: 未捕获的TypeError:无法读取未定义的属性“options” 当我把一个拖拽装置放在一个拖拽装置上。我“认为”(见下面的编辑)我知道发生错误是因为我在答案正确时返回“false”,而false不是revert的合法返回语句 我希望可拖动div保持在给定的位置,不再可拖动,因此它不会返回到起始位置。我尝试了不返回任何内容、返回“有效”、返回“无效”和返回tru

我做了一个简单的拖放测试函数。当然,除了Internet Explorer之外,一切都很好。在Chrome控制台中,我遇到以下错误:

未捕获的TypeError:无法读取未定义的属性“options”

当我把一个拖拽装置放在一个拖拽装置上。我“认为”(见下面的编辑)我知道发生错误是因为我在答案正确时返回“false”,而false不是revert的合法返回语句

我希望可拖动div保持在给定的位置,不再可拖动,因此它不会返回到起始位置。我尝试了不返回任何内容、返回“有效”、返回“无效”和返回true。但除不返回任何内容外,所有内容都会将div返回到其开始位置

不返回任何内容会产生与上述相同的错误。我的问题是,如果没有Chrome中的错误,我必须返回什么?或者我需要改变我的功能吗

这就是函数

function dragAndDrop() {
    //drag and drop
    $('.drag').draggable({ revert: 'invalid'}); //returns this to start position when drag stops and not dropped on droppable element
    $('.answer').droppable({ 
        drop: function(event, ui) {
            var target = $(this);
            var targetId = target.attr('id');
            ui.draggable.draggable('option', 'revert', function() {
                var dragId = $(this).attr('id');
                if(dragId == targetId) {
                    //right answer
                    $(this) 
                        .offset({ top: target.offset().top, left: target.offset().left })
                        .draggable('destroy');
                    var img = $(this).find('img');
                    console.log(img);
                    $('.imageCol2 > div').each(function() {
                        if($(this).attr('id') == dragId) {
                            img
                                .css({ position: 'relative' })
                                .animate({"left": "-=px"}, "slow"); 
                                console.log($(this));
                        }
                    });
                    //score counter
                    $('span#correct').each(function(index, elem) {                      
                        var good = parseInt($(this).text()) + 1;
                        $(this).text( function(i,txt) {return txt.replace(/\d+/, good); });
                    });
                    return false;
                }
                else {
                    //wrong answer
                    //score counter
                    $('span#incorrect').each(function() {
                        var fault = parseInt($(this).text()) + 1;
                        $(this).text( function(i,txt) {return txt.replace(/\d+/, fault); });
                    });
                    return true;
                }
            });
        }
    });
}
请注意,只有在答案正确时才会发生错误

编辑:

我认为发生错误是因为返回语句错误。但我已将我的函数更改为下面的函数。当答案正确时,我仍然会犯同样的错误

    function dragAndDrop() {
    //drag and drop
    $('.drag').draggable({ revert: 'invalid'}); //returns this to start position when drag stops and not dropped on droppable element
    $('.answer').droppable({ 
        drop: function(event, ui) {
            var target = $(this),
                targetId = target.attr('id'),
                drag = $(ui.draggable), 
                dragId = drag.attr('id');
            if(dragId == targetId) {
                //right answer
                //score counter
                $('span#correct').each(function() {                     
                    var good = parseInt($(this).text()) + 1;
                    $(this).text( function(i,txt) {return txt.replace(/\d+/, good); });
                });
                drag
                    .offset({ top: target.offset().top, left: target.offset().left })
                    .draggable('destroy');
                var img = drag.find('img'); 
                $('.imageCol2 > div').each(function() {
                    if($(this).attr('id') == dragId) {
                        img
                            .css({ position: 'relative' })
                            .animate({"left": "-=px"}, "slow"); 
                    }
                });
            }
            else {
                //wrong answer
                //score counter
                $('span#incorrect').each(function() {
                    var fault = parseInt($(this).text()) + 1;
                    $(this).text( function(i,txt) {return txt.replace(/\d+/, fault); });
                });
                drag.draggable('option', 'revert', true);
            }
        }
    });
}

我想我必须把问题改成“我做错了什么?”。

我已经找到了问题的答案

我将
('destroy')
更改为
('disable')
。这解决了发生错误的问题