自从我切换到 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/