3

Magento インストールにこの jQuery があります。

jQuery(document).ready(function($) {
    "use strict";
    var firstItems = $('.item.first');
    // Find tallest .item per row; match rest of row to it
    firstItems.each(function($) {
        var $first, row, headings, heights, maxHeight;
        $first = $(this);
        row = $first.add($first.nextUntil(firstItems));
        headings = row.find("h2, h5");
        heights = headings.map(function($) {
            return $(this).outerHeight();
        });
        maxHeight = Math.max.apply(null, heights);
        headings.css("height", maxHeight);
    });
});

悲しいことに、プロトタイプと競合しています。エラーをスローしています:

[object object] is not a valid argument for 'Function.prototype.apply'

これにより、競合は15行目から発生していると思われます。

maxHeight = Math.max.apply(null, heights);

プロトタイプによって無視されるように、その関数を別の方法でラップする方法はありますか?

4

2 に答える 2

6

あなたは.applying配列でなければならないjQueryオブジェクトです。

    heights = headings.map(function($) {
        return $(this).outerHeight();
    }).toArray(); //<-- convert to array

ライブラリが追加しないプロトタイプFunction.prototype.apply、それはネイティブ メソッドです。

于 2012-07-11T14:08:39.050 に答える
0

あなたが試すことができます :

 jQuery(function($){
      code_with_$;
 });

(function($){
    code_with_$;
})(jQuery);

また、プロトタイプの上にjQueryを宣言する必要がありました。(page.xmlを使用して、プロトタイプ上のjQueryの位置を定義できます。)次に、上記の構造を使用してjQueryコードを使用すると、問題が解決します。

于 2012-07-24T12:03:57.207 に答える