【发布时间】:2014-09-30 15:08:40
【问题描述】:
我正在开发一个新网站,并决定第一次使用 Modernizr。我相当确定它是如何工作的,但是,我正在寻找一些关于加载 jQuery 然后运行 jQuery 代码的最佳实践的建议。
我目前有以下内容作为我页面上的最后一项加载:
Modernizr.load([
{
load: '//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js',
complete: function(){
if( !window.jQuery){
Modernizr.load('/scripts/jquery-1.11.1.min.js');
}
}
},
{
load: '//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js',
complete: function () {
if ((typeof $().emulateTransitionEnd == 'function') == false) {
Modernizr.load('/scripts/bootstrap.min.js');
}
}
}
]);
这会尝试从 CDN 检索 jQuery,如果无法这样做,则加载本地版本。然后,它使用我网站上的引导组件所需的 Javascript 重复该过程。
我的问题是我有一些 jQuery 代码直接跟在这个后面:
$(document).ready(function () {
$('.wishlist-toggle').click(function () {
var nodeId = $(this).data("node");
var id = $(this).data("id");
var type = $(this).data("type");
var addTo = $(this).data("add");
var list = $(this).data("list");
var removeFrom = $(this).data("remove");
var storedCookie = getCookie("wishlist");
var jsonString = null;
var found = false;
...
由于某种原因,尽管在整个 jQuery 加载声明之后,我在控制台中收到一个错误,指定 $ 未定义。这通常表明在调用自定义脚本时,没有加载 jQuery。
我的问题是,这通常是如何完成的,在这种情况下什么被认为是最佳实践,以确保在尝试运行自定义代码之前真正加载 jQuery。
任何帮助、提示或指示将不胜感激。
【问题讨论】:
-
试试
console.log(Modernizr.hasOwnProperty("load"))。请参阅github.com/SlexAxton/yepnope.js#deprecation-notice “出于这些原因,我们也不打算将 yepnope 作为 Modernizr.load 包含在 Modernizr 的下一版本中。”
标签: javascript jquery modernizr