我正在创建一个小部件,我已经像这样初始化了 jQuery:
# widget.js
(function() {
var jQuery;
var root_url = "<%= root_url%>";
if (window.jQuery === undefined || window.jQuery.fn.jquery !== '1.9.1') {
var jquery_script = document.createElement('script');
jquery_script.type = "text/javascript";
jquery_script.asyc = true;
jquery_script.src = "http://code.jquery.com/jquery-1.9.1.js";
if (jquery_script.readyState) {
script_tag.onreadystatechange = function () { // For old versions of IE
if (this.readyState == 'complete' || this.readyState == 'loaded') {
scriptLoadHandler();
}
};
} else { // Other browsers
jquery_script.onload = scriptLoadHandler;
}
var node = document.getElementsByTagName('script')[0];
node.parentNode.insertBefore(jquery_script, node);
} else {
jQuery = window.jQuery;
main();
}
function scriptLoadHandler() {
jQuery = window.jQuery.noConflict(true);
main();
}
function main() {
jQuery(document).ready(function($) {
// jQuery works great here!
// But not so much in rendered partials or in server-side JS actions
}
}
})();
如果我向我的服务器发出 ajax 请求并以 JS 操作进行响应,我无法在我的action.js.erb
文件中使用 jQuery。它吐出错误$ is not a function
。
类似地,即使在其中使用 jQuery 脚本渲染部分片段也会产生相同的结果。
我想我还没有设置 jQuery 的全局实例,如果是这种情况,我不知道该怎么做。也许我不应该这样做?
我怎样才能解决这个问题?