2013-08-16 27 views
0

我有在顶部(在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

我相信,我有加载库,这不是问题,因为如果我打电话equalizeHeights()它返回一个有效的jQuery对象之前立即console.log$变量。问题在于$由于某种原因未被子函数继承。

制作$全局和分配$ = jQuery不是一个选项。

任何想法?

+0

什么是您的范围块的样子?你总是可以将特定的jQuery对象传递给equalizeHeights。例如'equaliseHeights($)' –

回答

1

你必须准备好回调函数

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

的范围界定equalizeHeights如果你需要它是全球性的,

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

你可能也想尝试:

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

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

和传递$通过函数调用。否则,对jQuery的引用是'$'正在丢失。

+0

是的,我可以这样做,但它不是一个可维护的选项,因为我可能会调用'.ready()'上的几十个函数并为每个函数提供一个参数对我来说似乎不是很好的做法。是否应该在子函数调用中继承父变量值? –

+0

'是否应该在子函数调用中继承父变量值?'取决于声明变量的位置。在这种情况下,除非你在'function($){}'中放置'equalizeHeights',否则不在函数的作用域内。 –