Javascript jQuery以无冲突模式加载,可以';即使作为函数参数传递,也不能访问$
我在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.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()
上调用几十个函数,并且为每个函数提供一个参数对我来说似乎不是一个好的做法。父变量值不应该在子函数调用上继承吗?父变量值不应该在子函数调用上继承吗?
取决于变量的声明位置。在这种情况下,不在函数的范围内,除非将放置在函数($){}
中。