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 にアップグレードすると、私の Web サイトも機能しなくなりました。

ここで 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 が 1 つの要素のコレクションであり、jQuery 1.4.2 の場合に追加できることです。ただし、jQuery 1.4.3 では、_builderCanvas はまだコレクションでしたが、空でした。

_buildTag 関数内に _builderCanvas 初期化を配置することで、これを回避しました。

私の問題の根本的な原因は、jQuery 1.4.2 では、document.body が存在する前に 'jQuery("body")' を呼び出した場合、とにかく (最適化として) document.body を返すことでしたが、jQuery 1.4.3 では、追加の条件 (&& document.body) が追加されたため、ドキュメントの準備が整う前に呼び出された場合、jQuery('body') は何も検出しません。

私の問題とは関係ありませんが、1.4.2 から 1.4.3 への重大な変更の 1 つは、関数 .data() が以前のデータをすべて消去するのではなく、それらに追加することです。

于 2014-09-24T06:39:59.643 に答える