jQuery函数不会全局读取属性

时间:2017-08-17 09:50:46

标签: jquery function global

我在简化大量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。它确实在那里正常工作,这引出了为什么它不在生产环境中的问题

1 个答案:

答案 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);
    });

}

现在它正常工作。谢谢大家一起思考。