我在简化大量jQuery代码的过程中,我想做的第一件事就是全局设置函数,以便在整个范围内使用和重用它们。一个功能是根据最高元素设置与元素相等的高度:
function setEqHeight(cont, classname) {
var maxHeight = 0;
$(cont).each(function(){
var prodName = $(classname,this);
$(prodName).each(function(){ if ($(this).height() > maxHeight) { maxHeight = $(this).height(); } });
$(prodName).height(maxHeight);
});
}
我这样运行
setEqHeight('.containername','.classname');
只要我在$j( document ).ready(function($) { });
内拨打电话,这都有效
但是我想在文档准备就绪之外全局设置函数,并在里面调用函数。
当我将函数设置在文档就绪范围之外,并在范围内调用它时,出现Uncaught TypeError: Cannot read property 'each' of null
错误。就像它无法读取'容器名称'了。我很困惑,我做错了什么?
修改:jsFiddle here。它确实在那里正常工作,这引出了为什么它不在生产环境中的问题
答案 0 :(得分:0)
我在this answer找到了罪魁祸首。我认为这与脚本运行的确切环境有关; Magento的。 Magento没有开箱即用jQuery,所以我将函数中的美元符号更改为jQuery,就像这样;
function setEqHeight(cont, classname) {
var maxHeight = 0;
jQuery(cont).each(function(){
var prodName = jQuery(classname,this);
jQuery(prodName).each(function(){ if (jQuery(this).height() > maxHeight) { maxHeight = jQuery(this).height(); } });
jQuery(prodName).height(maxHeight);
});
}
现在它正常工作。谢谢大家一起思考。