我正在创建一个书签,下面的代码在第一次尝试时无效。当我转到页面时,它说“jQuery未定义”。但是,如果我再次点击它,它的效果会很好吗?
var qrcodetogo = {
jQURL: 'http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js',
jQUIURL: 'http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.1/jquery-ui.min.js',
jQUIThemeURL: 'http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.1/themes/ui-lightness/jquery-ui.css',
init: function(){
this.createLink('qrcodetogo_UI-Lightness', this.jQUIThemeURL);
this.createScript('qrcodetogo_jQuery', this.jQURL);
this.createScript('qrcodetogo_jQueryUI', this.jQUIURL);
this.createHiddenDiv('qrcodetogo_dialog','This is a Test.');
jQuery.noConflict();
},
showQRCode: function() {
jQuery('#qrcodetogo_dialog').dialog();
},
createLink: function(id, url) {
var l = document.createElement('link');
l.href = url;
l.rel = 'stylesheet';
l.type = 'text/css';
l.media = 'screen';
l.charset = 'utf-8';
document.getElementsByTagName('head')[0].appendChild(l);
},
createScript: function(id, url) {
var s = document.createElement('script');
s.src = url;
s.id = id;
document.getElementsByTagName('head')[0].appendChild(s);
},
createHiddenDiv: function(id, body) {
var div = document.createElement('div');
div.id = id;
div.innerHTML = body;
div.style.display = 'none';
document.getElementsByTagName('body')[0].appendChild(div)
}
}
qrcodetogo.init();
qrcodetogo.showQRCode();
答案 0 :(得分:2)
动态添加的脚本标记将进入队列:首先,您的代码将执行到最后,然后是队列中已有的任何其他代码(例如,其他onclick事件处理程序),然后脚本标记中的代码。将依赖于jQuery的代码放在一个单独的函数中,并将其设置为脚本标记的onload事件的事件处理程序。
答案 1 :(得分:0)
也许你在完成下载和解析之前尝试使用jQuery。
答案 2 :(得分:0)
您正在从Google下载代码,很有可能,在从Google完全下载实际库之前,您的页面正在加载并运行Jquery代码... 您应该将文件放在页面所在的位置......
或者,您可以在索引页面中包含jquery库,从而在调用它之前使其可用于整个网站!
顺便说一下:使用google的文件很好,但只有正确加载才能使用!
答案 3 :(得分:0)
您可以使用回调修复它:
var createScript = function (id, url, callback) {
var s = document.createElement('script');
s.src = url;
s.id = id;
s.addEventListener('load', callback);
document.getElementsByTagName('head')[0].appendChild(s);
};
createScript("id1", "//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js", function () {
document.write('Loaded');
});