0

从 jquery 1.4.2 升级到 1.4.3 时是否有任何已知问题?我正在尝试升级,但是,在 1.4.3 中,根本没有触发任何事件。当我恢复到 1.4.2 时,一切正常。我错过了一些完全明显的东西吗?

控制台中没有显示 javascript 错误,$(document).ready()工作正常,选择器也正常,只是没有触发事件!

4

2 回答 2

0

这是由 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 和任何更高版本中都可以正常工作。我希望没有其他人会遇到这个问题!

于 2012-08-02T14:22:55.110 回答
0

从 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() 不再删除所有以前的数据,而是添加到它们。

于 2014-09-24T06:39:59.643 回答