jquery 2.0 jquery ui datepicker bug - 未捕获的TypeError:无法读取未定义的属性'append'

Yur*_*rov 5 each jquery jquery-ui jquery-ui-datepicker

自从我切换到JQuery的2.0有一个bug与破坏的jQuery UI(1.10.2)Datepickers.

似乎修改了jquery.each()函数的问题.

我跟随

$(this.el_picker).datepicker('destroy');
Run Code Online (Sandbox Code Playgroud)

它调用JQuery UI 第9605行

return this.each(function() {
    typeof options === "string" ?
        $.datepicker["_" + options + "Datepicker"].
            apply($.datepicker, [this].concat(otherArgs)) :
        $.datepicker._attachDatepicker(this, options);
});
Run Code Online (Sandbox Code Playgroud)

然后它在Jquery.each()函数中调用以下:

if ( isArray ) {
        for ( ; i < length; i++ ) {
                value = callback.call( obj[ i ], i, obj[ i ] );

                if ( value === false ) {
                    break;
                }
            }
        } else {
            for ( i in obj ) {
                value = callback.call( obj[ i ], i, obj[ i ] );

                if ( value === false ) {
                    break;
                }
            }
        }
Run Code Online (Sandbox Code Playgroud)

这是与旧版JQuery的区别

        if ( isObj ) {
            for ( name in object ) {
                if ( callback.call( object[ name ], name, object[ name ] ) === false ) {
                    break;
                }
            }
        } else {
            for ( ; i < length; ) {
                if ( callback.call( object[ i ], i, object[ i++ ] ) === false ) {
                    break;
                }
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

然后转到JQuery UI 第7922行

_destroyDatepicker: function(target) {
    var nodeName,
        $target = $(target),
        inst = $.data(target, PROP_NAME);

    if (!$target.hasClass(this.markerClassName)) {
        return;
    }

    nodeName = target.nodeName.toLowerCase();
    $.removeData(target, PROP_NAME);
    if (nodeName === "input") {
        inst.append.remove();
Run Code Online (Sandbox Code Playgroud)

并抛出错误:

未捕获的TypeError:无法读取undefined的属性'append'

有任何想法吗?是兼容性错误吗?怎么解决?或者我做错了什么.

小智 10

假设您要重置datepicker,我发现解决此问题的一种方法是:

__CODE__


Mat*_*age -1

我遇到了同样的问题,我找到了另一个解决方案,其中提到在 jquery 和 jqueryui 引用下方添加以下脚本引用:

<script src="http://code.jquery.com/jquery-migrate-1.1.1.js"></script>
Run Code Online (Sandbox Code Playgroud)

这解决了我的日期选择器问题。