2017-03-14 32 views
1

我是Reqire.JS的新手,我无法使用Google CDN jQuery制作fancybox。要求JS与CDN jQuery和Fancybox

我的文件结构是:

index.html/ 
├── js/ 
│ ├── app.js 
│ ├── app/ 
│ | ├── main.js 
│ ├── lib/ 
│ | ├── require.js 
│ | ├── jquery.fancybox.js 
│ | ├── jquery.fancybox-thumbs.js 
│ | ├── jquery.fancybox-media.js 
│ | ├── jquery.mousewheel-3.0.6.pack.js 

app.js

requirejs.config({ 
    "baseUrl": "js/lib", 
    "paths": { 
     "app": "../app", 
     "jquery": "//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min", 
     "jquery.fancybox": "jquery.fancybox", 
     "jquery.fancybox-thumbs": "jquery.fancybox-thumbs", 
     "jquery.fancybox-media": "jquery.fancybox-media", 
     "jquery.mousewheel-3.0.6.pack": "jquery.mousewheel-3.0.6.pack" 
    } 
}); 

requirejs(["app/main"]); 

main.js

define(["jquery", "jquery.fancybox-media", "jquery.fancybox-thumbs", "jquery.fancybox", "jquery.mousewheel-3.0.6.pack"], function ($) { 
    $(function() { 
     $('.fancybox').fancybox(); 
    }); 
}); 

HTML

<head> 
     <script data-main="js/app" src="js/lib/require.js"></script> 
    </head> 
    <body> 
     <a class="fancybox" href="myImage.jpg" data-fancybox-group="gallery" title=""> 
      <h5>Click</h5> 
     </a> 
    </body> 

我仍然geting没有定义jQuery的错误。我可以在DOM上看到我的fancybox库和jQuery,但没有任何反应。

+0

我认为应该是这样的:'jquery:“//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min”,'。从文档中删除'jquery'处的'brackets - “”'':http://requirejs.org/docs/jquery.html – vanloc

+0

@vanloc你确定吗?已经尝试过,并没有工作。顺便说一句,在这两种情况下(有或没有括号),我可以看到DOM的jQuery。在文件中它表明没有方括号,但在例子中,括号已经完成。 – Cromwell

+0

我只是看到你的代码正确。我在文档中发现不需要''“'。所以,我认为应该删除它。 – vanloc

回答

1

您可能需要按文件here填充fancybox文件。

喜欢的东西:

requirejs.config({ 
    baseUrl: 'Scripts', 
    paths: { 
     "app": "../App", 
     "jquery": 'jquery-3.1.1' //Or use cdn 
    }, 
    shim: { 
     "jquery.fancybox": ["jquery"] 
    } 
}); 

requirejs(["app/index"]); 

你所得到的错误很可能是由于需要努力异步加载两个jQuery和的fancybox文件,接收的fancybox一个第一(因为它更小),不能够使用它作为jQuery文件尚未加载,所以错误。