从 jquery 1.4.2 升级到 1.4.3 时是否有任何已知问题?我正在尝试升级,但是,在 1.4.3 中,根本没有触发任何事件。当我恢复到 1.4.2 时,一切正常。我错过了一些完全明显的东西吗?
控制台中没有显示 javascript 错误,$(document).ready()
工作正常,选择器也正常,只是没有触发事件!
从 jquery 1.4.2 升级到 1.4.3 时是否有任何已知问题?我正在尝试升级,但是,在 1.4.3 中,根本没有触发任何事件。当我恢复到 1.4.2 时,一切正常。我错过了一些完全明显的东西吗?
控制台中没有显示 javascript 错误,$(document).ready()
工作正常,选择器也正常,只是没有触发事件!
这是由 jquery.uuid.js 插件引起的,特别是:
$.uuid = function(p) {
if (typeof (p) == 'object' && typeof (p.prefix) == 'string') {
_uuid_default_prefix = p.prefix;
} else {
p = p || _uuid_default_prefix || '';
return (p + _uuidlet() + _uuidlet() + "-" + _uuidlet() + "-" + _uuidlet() + "-" + _uuidlet() + "-" + _uuidlet() + _uuidlet() + _uuidlet());
};
};
如果我将函数重命名为 $.uniqueidentifier,并将任何引用重命名为它,事件在 jquery 1.4.3 和任何更高版本中都可以正常工作。我希望没有其他人会遇到这个问题!
从 jQuery 1.4.2 升级到 1.4.3 时,我的网站也停止工作。
我在这里使用 Dean Edwards 的 Base.js 库:http://dean.edwards.name/weblog/2006/03/base/这 是导致问题的代码片段:
asm.ui.Builder = Base.extend({
/** Element to build other elements in (hidden, accessible). */
_builderCanvas: $('<div></div>')
.addClass('ui-helper-hidden-accessible')
.appendTo('body'),
/**
* Creates XHTML element with supplied tag name and attributes.
* @tparam string tag tag name
* @tparam object attributes tag attributes
* @treturn jQueryEl created element
*/
_buildTag: function (tag, attributes) {
var str = '<' + tag;
if (attributes != undefined) {
$.each(attributes, function (name, value) {
str += ' ' + name + '="' + value + '"';
});
}
str += ($.inArray(tag, this._singleTags) != -1)
? '/>'
: '></' + tag + '>';
var newTag = $(str);
return $(str).appendTo(this._builderCanvas);
},
...
});
问题是在 _buildTag 函数内部,_builderCanvas 是一个元素的集合,因此可以在 jQuery 1.4.2 中附加到。然而,在 jQuery 1.4.3 中,_builderCanvas 仍然是一个集合,但它是空的。
我通过将 _builderCanvas 初始化放入 _buildTag 函数来解决这个问题。
我的问题的根本原因是,在 jQuery 1.4.2 中,如果你在 document.body 存在之前调用了 'jQuery("body")',它无论如何都会返回 document.body(作为优化),而在 jQuery 1.4.3 中,添加了一个附加条件(&& document.body),因此现在如果在文档准备好之前调用 jQuery('body'),则什么也找不到。
与我的问题无关,但从 1.4.2 到 1.4.3 的重大变化之一是函数 .data() 不再删除所有以前的数据,而是添加到它们。