簡體   English   中英

為什么jQuery UI沒有看到jQuery?

[英]Why doesn't jQuery UI see jQuery?

我已經構建了一個JavaScript小部件,必須可以在任何環境中的任何第三方網站上嵌入。 該小部件依賴於jQuery和jQuery UI。 我按照如何將依賴於jQuery的Javascript小部件嵌入到未知環境中的步驟以負責任的方式添加jQuery - 非常適合嵌入jQuery。 但是當我嘗試添加jQuery UI時,它失敗了。 這是代碼:

(function(window, document, version, callback) {
  var j, d;
  var loaded = false;
  if (!(j = window.jQuery) || version > j.fn.jquery || callback(j, loaded)) {
    var script = document.createElement("script");
    script.type = "text/javascript";
    script.src = "https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js";
    script.onload = script.onreadystatechange = function() {
        if (!loaded && (!(d = this.readyState) || d == "loaded" || d == "complete")) {
            callback((j = window.jQuery).noConflict(1), loaded = true);
            j(script).remove();
        }
    };
    document.documentElement.childNodes[0].appendChild(script)
  }
})(window, document, "1.3.2", function($, jquery_loaded) {
    $.getScript('http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.js', function(){
      console.log('loaded');
    });
});

當我運行它時,我得到'加載'消息,然后在jquery-ui.js的第15行上出現錯誤,說“$ is undefined”。 但是當我使用$ .getScript()來加載jQuery UI時,如何才能定義$? 為什么我在收到錯誤之前會看到“已加載”消息? 根據jQuery文檔,在腳本加載並執行之前,getScript不應該執行回調。

有什么方法可以使用這個框架來包含jQuery UI,還是我需要使用像RequireJS這樣的腳本加載器來加載所有內容,強制執行依賴項等?

通過調用.noConflict(1) ,與.noConflict(true)相同,您將刪除jQuery,只需刪除1 .noConflict()true參數告訴jQuery不僅要刪除$ ,而且window.jQuery刪除window.jQuery ,jQuery UI在加載后會嘗試使用

你可以在這里測試一下 ,看看控制台里沒有錯誤。

暫無
暫無

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

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