javascript – 为什么jQuery UI看不到jQuery?

前端之家收集整理的这篇文章主要介绍了javascript – 为什么jQuery UI看不到jQuery?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我已经构建了一个 JavaScript小部件,必须可以在任何环境中的任何第三方网站上嵌入.该小部件依赖于jQuery和jQuery UI.我按照 How to embed Javascript widget that depends on jQuery into an unknown environment中的步骤以负责任的方式添加jQuery – 非常适合嵌入jQuery.但是当我尝试添加jQuery UI时,它失败了.这是代码
  1. (function(window,document,version,callback) {
  2. var j,d;
  3. var loaded = false;
  4. if (!(j = window.jQuery) || version > j.fn.jquery || callback(j,loaded)) {
  5. var script = document.createElement("script");
  6. script.type = "text/javascript";
  7. script.src = "https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js";
  8. script.onload = script.onreadystatechange = function() {
  9. if (!loaded && (!(d = this.readyState) || d == "loaded" || d == "complete")) {
  10. callback((j = window.jQuery).noConflict(1),loaded = true);
  11. j(script).remove();
  12. }
  13. };
  14. document.documentElement.childNodes[0].appendChild(script)
  15. }
  16. })(window,"1.3.2",function($,jquery_loaded) {
  17. $.getScript('http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.js',function(){
  18. console.log('loaded');
  19. });
  20. });

当我运行它时,我得到’加载’消息,然后在jquery-ui.js的第15行上出现错误,说“$is undefined”.但是当我使用$.getScript()加载jQuery UI时,如何定义$?为什么在收到错误之前我会看到消息“已加载”?根据jQuery文档,在脚本加载并执行之前,getScript不应该执行回调.

有什么方法可以使用这个框架来包含jQuery UI,还是我需要使用像RequireJS这样的脚本加载器来加载所有内容,强制执行依赖项等?

解决方法

通过调用.noConflict(1),与.noConflict(true)相同,你正在删除jQuery,只需删除1. .noConflict()的真实参数告诉jQuery不仅要删除$,而且还要删除window.jQuery,其中jQuery UI是在加载时尝试使用.

You can test it here,看到控制台中没有错误.

猜你在找的jQuery相关文章