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 回答