jquery 2.0 jquery ui datepicker bug - 未捕获的 TypeError : Cannot read property 'append' of undefined

标签 jquery jquery-ui jquery-ui-datepicker each

自从我切换到 JQuery 2.0 以来,我遇到了一个破坏 jQuery UI (1.10.2) 日期选择器的错误。

似乎是jquery.each()函数修改时出现的问题。

我执行以下操作

$(this.el_picker).datepicker('destroy');

它在 JQuery UI 第 9605 行调用

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

然后它在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;
                }
            }
        }

这是与旧版本 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;
                }
            }
        }
    }

然后转到 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();

并抛出错误:

Uncaught TypeError: Cannot read property 'append' of undefined

有什么想法吗?是兼容性bug吗?如何修复它?或者我做错了什么。

最佳答案

假设您想重置日期选择器,我发现解决此问题的一种方法是:

 $(".hasDatepicker").removeClass("hasDatepicker");
 $(".datepicker").datepicker("destroy");
 $(".datepicker").datepicker();

关于jquery 2.0 jquery ui datepicker bug - 未捕获的 TypeError : Cannot read property 'append' of undefined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16269034/

相关文章:

javascript - 使用 jQuery 通过 DOM 创建 SVG

jquery 如何在调整大小时刷新页面?

javascript - 使用最后一个文本框值填充新添加的文本框

javascript - Twitter Bootstrap 3 模态中的 jQuery Datepicker

javascript - 将 .has() 与 keyup 事件一起使用

javascript - 如何从 C# 或 Javascript 检查文件是否存在?

javascript - 当满足特定条件时停止函数并在其他条件下再次启动它

带有进度条型填充的 jQuery slider

jquery - 从右向左滑动?

jQuery datepicker 的 dateFormat - 如何与 .NET 当前文化 DateTimeFormat 集成