打破jquery 1.4.2和1.4.3之间的变化?

时间:2012-08-02 13:02:07

标签: jquery

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

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

2 个答案:

答案 0 :(得分: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及更高版本中都可以正常工作。我希望没有人能够忍受这个问题!

答案 1 :(得分: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中,添加了一个附加条件(&amp;&amp; document.body),所以现在jQuery('body')在文档准备好之前调用时找不到任何内容。

与我的问题无关,但是从1.4.2到1.4.3的一个重大变化是函数.data()不再删除所有先前的数据,而是添加到它们。

相关问题