簡體   English   中英

jQuery noConflict模式

[英]jQuery noConflict mode

我正在嘗試在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;
}

這是行不通的( Uncaught ReferenceError:計算未定義 ):

(function($){
function calculate()
{
    var de = document.calculator.de.value;
    var para = document.calculator.para.value;
    var quantia = document.calculator.quantia.value;
    var pais = $("#para option:selected").text();
    var curr = (pais == "Brazil" ? "Reais" : "Euro");
    var tax = (pais == "Brazil" ? 0 : 3)
    result = Math.round(quantia * para) + ' ' + curr;
    $('#result').text(result);
    e.preventDefault();
    return false;
}
})(jQuery);

我可能錯過了一個小細節,但是我哪里出錯了?

函數calculate對於閉包是局部的。 最好的解決方案是將所有代碼都放入閉包中。 如果無法實現,則可以通過以下方式將功能分配給window

window.calculate = calculate;

您也可以從閉包中返回它,然后將其分配給calculate變量:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM