jQuery在noConflict模式下加载,即使作为函数参数传递也无法访问$

时间:2013-08-16 13:04:35

标签: javascript jquery conflict

我在顶部(在WordPress中)加载了jQuery.noConflict()的jQuery。

然后我有以下自定义功能:

var equalizeHeights = function(){
  $('.header').height(500);
}

我以.ready()的方式致电:

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

函数参数中的$应该使整个块中的jQuery变量的简写版本可用,但我实际尝试在equalizeHeights()函数中设置高度的行返回控制台出错。

Uncaugth TypeError: Property '$' of object [object Object] is not a function

我确信我已经加载了库,这不是问题,因为如果在调用console.log之前我$ equalizeHeights()变量,它会返回一个有效的jQuery对象。问题是由于某种原因,$不会被子函数继承。

使$全局并分配$ = jQuery不是一种选择。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

您可能想尝试:

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

    var equalizeHeights = function($){
        $('.header').height(500);
    }

并通过函数调用传递$。否则,jQuery的引用为'$'就会丢失。

答案 1 :(得分:1)

您必须在就绪回调函数

的范围内定义equalizeHeights
jQuery(function($){
    equalizeHeights($);
    var equalizeHeights = function($){
        $('.header').height(500);
    }
});

如果你需要它是全球性的,

var equalizeHeights;
jQuery(function($){
    equalizeHeights = function($){
        $('.header').height(500);
    }
    equalizeHeights($);
});