Javascript jQuery以无冲突模式加载,可以';即使作为函数参数传递,也不能访问$

Javascript jQuery以无冲突模式加载,可以';即使作为函数参数传递,也不能访问$,javascript,jquery,conflict,Javascript,Jquery,Conflict,我在jQuery的顶部加载了jQuery.noConflict()(在WordPress中) 然后我有以下自定义函数: var equalizeHeights = function(){ $('.header').height(500); } 我这样调用.ready(): jQuery(function($){ equalizeHeights(); }); 函数参数中的$应该使jQuery变量的速记版本在整个块中都可用,但是我在equalizeHeights()函数中实际尝试设置高度

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

然后我有以下自定义函数:

var equalizeHeights = function(){
  $('.header').height(500);
}
我这样调用
.ready()

jQuery(function($){
  equalizeHeights();
});
函数参数中的
$
应该使jQuery变量的速记版本在整个块中都可用,但是我在
equalizeHeights()
函数中实际尝试设置高度的那一行在控制台中返回了一个错误

Uncaugth TypeError:对象[object]的属性“$”不是函数

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

$
设为全局并分配
$=jQuery
不是一个选项

有什么想法吗?

您可能想试试:

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

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

并通过函数调用传递$。否则,对jQuery的引用将丢失。

您必须在ready回调函数的作用域中定义
equalizeHeights

jQuery(function($){
    equalizeHeights($);
    var equalizeHeights = function($){
        $('.header').height(500);
    }
});
如果你需要全球化

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

您的范围块是什么样子的?您始终可以将特定jQuery对象传递给其他对象。e、 g.
equalizeHeights($)
是的,我可以这样做,但这不是一个非常可维护的选项,因为我可能会在
.ready()
上调用几十个函数,并且为每个函数提供一个参数对我来说似乎不是一个好的做法。父变量值不应该在子函数调用上继承吗?
父变量值不应该在子函数调用上继承吗?
取决于变量的声明位置。在这种情况下,不在函数的范围内,除非将
放置在
函数($){}
中。