在通过Modernizr加载jQuery之后运行自定义代码
Run custom code after jQuery has been loaded via Modernizr
我正在开发一个新网站,并决定第一次使用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。
任何帮助、提示或建议都将不胜感激。
尝试
var _jquery = function () {
$(document).ready(function () {
// do jquery stuff
console.log("jQuery loaded");
$("#jq").html("jquery version " + jQuery().jquery + " ready")
})
};
var _bootstrap = function () {
// do bootstrap stuff
console.log("bootstrap loaded");
$(".btn").trigger("click")
.promise().done(function(el) {
setTimeout(
function() {
$(el).trigger("click")
}, 3000
)
});
};
var _load = function (url1, url2, test, callback) {
var script = document.createElement("script");
script.src = url1;
script.type = "text/javascript";
var head = document.getElementsByTagName("head")[0];
head.appendChild(script);
setTimeout(function () {
if (test()) {
_load(url2, null, function() {return false}, callback)
} else {
callback()
}
}, 3000)
};
var _scripts = [
["//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"
, "//code.jquery.com/jquery-1.11.1.min.js", function () {
return !window.jQuery
},
_jquery],
["//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js",
"//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.2.0/js/bootstrap.min.js", function () {
return (typeof $().emulateTransitionEnd == 'function') == false
},
_bootstrap]
];
_scripts.forEach(function (v) {
_load(v[0], v[1], v[2], v[3]);
});
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Bootstrap 101 Template</title>
<!-- Bootstrap -->
<link href="//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.2.0/css/bootstrap.min.css" rel="stylesheet">
<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
<![endif]-->
</head>
<body>
<!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
<!-- Include all compiled plugins (below), or include individual files as needed -->
<!-- Small modal -->
<button class="btn btn-primary" data-toggle="modal" data-target=".bs-example-modal-sm">Small modal</button>
<div class="modal fade bs-example-modal-sm" tabindex="-1" role="dialog" aria-labelledby="mySmallModalLabel" aria-hidden="true">
<div class="modal-dialog modal-sm">
<div class="modal-content">
<div id="jq"></div>
</div>
</div>
</div>
</body>
相关文章:
- 如何让C#代码在页面加载时运行的jquery脚本之后运行
- 在.append之后运行函数
- 在on.change事件之后运行函数
- 在AJAX jQuery加载()之后运行jQuery代码
- 在客户端 Javascript 方法之后运行服务器方法
- 在每个函数之后运行一个函数
- 有人能为我指明正确的方向,让一个javascript文件在另一个单独的javascript文件之后运行吗
- JS-强制函数在其他函数之后运行
- 如何在元素的默认行为之后运行单击功能
- 如何在 pjax 加载之前和之后运行 jQuery
- 在构造函数之后运行其他操作
- 在 modeldata 之后运行 JavaScript 代码是有效的
- 在通过Modernizr加载jQuery之后运行自定义代码
- jQuery lightbox(羽灯)如何在Open事件之前和之后运行
- 如何在jquery中准备好$.mobile.changePage之后运行回调函数
- 阻止其他功能在所选功能之后运行
- 如何在Angular中的回调函数之后运行代码
- Selenium2 WebDriver executeScript是否在window.onload之后运行
- 在更新面板AJAX asp.net之后运行脚本
- 使用循环在另一个函数之后运行一个函数&jQuery/JavaScript中的promise