0
我創建一個小部件,爲此,我已經像這樣初始化的jQuery:無法使用jQuery與服務器端的Rails小部件
# 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腳本渲染partials也會產生相同的結果。
我想我沒有設置jQuery的全局實例,如果是這種情況,我不知道該怎麼做。也許我不應該?
我該如何解決這個問題?
我認爲它是因爲你使用jquery.noconflict,當你使用這個$符號變得不可用時,不再有別名 – Richlewis 2013-04-29 14:08:39
@Richlewis嗯真的嗎?我認爲你可能會找到一些東西。我從未考慮過這個。那麼,我會如何糾正其他jQuery實例呢? – 2013-04-29 17:29:48