1

私のサイトの 1 つだけで、jQuery 1.3.2 で多くの問題が発生しています。これは Joomla サイトなので、Mootools もページに含まれています (Mootools を削除するのは非常に困難です)。基本的に問題は、基本的な jQuery セレクターを 1 つのセレクター (例: "a", ".myClass"not "html a", ".myClass td" ) で呼び出すと、最初の要素のみが返されることです。

コードをステップ実行し、Sizzle エンジンのこの関数に絞り込みました
(2058 行目のjquery.jsを参照してください) 。

var makeArray = function(array, results) {
    array = Array.prototype.slice.call( array );
    if ( results ) {
        results.push.apply( results, array );
        return results;
    }
    return array;
};

を呼び出した後にログに記録した値を示すために、コメントを付けてここにもう一度書きますjQuery("a")

var makeArray = function(array, results) {
    // "array" is an array of all the 58 links on the page
    // "results" is an empty jQuery object

    array = Array.prototype.slice.call( array );

    // array is unchanged.

    if ( results ) {   // true
        results.push.apply( results, array );
        // "results" is now an array only holding the FIRST element.
        return results;
    }
    return array;
};

誰かが私にこのコードを説明できますか? また、なぜ私の要素の1つを除いてすべてを取り除くのですか??

4

1 に答える 1

6

アーグ、ついに見つけた。jQuery 1.3以降と互換性のない古いバージョンのValidationプラグインpushを使用していました。これは、最初の要素のみを配列にプッシュする独自のメソッドを定義しており、通常のjQueryメソッドの代わりに呼び出されていました。

だから、これをアップグレード後に奇妙なことを経験するすべてのあなたがたへの警告としましょう:あなたのプラグインの互換性をチェックしてください!!

于 2009-04-28T01:37:21.323 に答える