Javascript jQuery无冲突模式

Javascript jQuery无冲突模式,javascript,jquery,joomla,Javascript,Jquery,Joomla,我试图在Joomla站点上使用jQuery,Joomla以noConflict模式加载jQuery。我试图用(function($){…})(jQuery)包装我的代码 这项工作: function calculate() { var de = document.calculator.de.value; var para = document.calculator.para.value; var quantia = document.calculator.quantia.

我试图在Joomla站点上使用jQuery,Joomla以noConflict模式加载jQuery。我试图用
(function($){…})(jQuery)包装我的代码

这项工作:

function calculate()
{
    var de = document.calculator.de.value;
    var para = document.calculator.para.value;
    var quantia = document.calculator.quantia.value;
    var pais = jQuery("#para option:selected").text();
    var curr = (pais == "Brazil" ? "Reais" : "Euro");
    var tax = (pais == "Brazil" ? 0 : 3)
    result = Math.round(quantia * para) + ' ' + curr;
    jQuery('#result').text(result);
    e.preventDefault();
    return false;
}
这不起作用(未捕获引用错误:未定义计算):


我可能遗漏了一个小细节,但哪里出了问题?

函数
calculate
是闭包的局部函数。最好的解决方案是将所有代码放入闭包中。如果不可能,您可以通过以下方式将功能分配给
窗口

window.calculate = calculate;
您也可以从闭包中返回它,然后将其分配给
calculate
变量:

calculate = (function($) {
    ...
    return calculate;
})(jQuery);

太好了,行得通。但是,如果我有几个函数,我是否必须以类似的方式包装它们中的每一个,或者我是否可以一次包装所有的函数?(函数
calculate
从这里调用:
@johanpw,因为您已经在使用jQuery:只需绑定一个合适的事件侦听器即可。阅读
jQuery.on
calculate = (function($) {
    ...
    return calculate;
})(jQuery);