jQueryを扱って以来、しばらくお待ちください。私は愚かな間違いをしていると思う。ここで
は、Djangoのウィジェットです:
alert("bar");
$(document).ready(function() {
alert("omfg");
$('.foo-widget').click(function() {
alert("hi");
return false;
});
});
alert("foo");
のみalert()
火災が最初である:ここでは
class FooWidget(Widget):
# ...
class Media:
js = ('js/foowidget.js',)
は.jsファイルです。私は愚かな構文エラーまたは何かを持っていますか?
また、ページ上の他のスクリプトが$(document).ready
を再定義すると、心配する必要はありますか? jQueryのは、すでにfoowidget.js
がある時点でページに含まれる
$(document).ready(function() {
document.ready()
// real stuff
});
:私はそれのような何かをする、後続の定義については安全ですので、その後の定義は、鉱山を上書きすることを推測しています。
更新:@のlazerscienceのリンクに基づいて、私の代わりに、以下を試してみましたが、それはまだただ以前のように失敗します。
alert("bar");
$(function() {
alert("omfg");
$(".set-widget").click(function() {
alert("hi");
return false;
});
});
alert("foo");
はアップデート2:私は不思議なことに、:
alert($);
「未定義」になります。これは、jQueryが実際には初期化されていないことを示しています。
<script type="text/javascript" src="/media/js/jquery.min.js"></script>
<script type="text/javascript" src="/media/js/jquery.init.js"></script>
<script type="text/javascript" src="/media/js/actions.min.js"></script>
<script type="text/javascript" src="/static/js/foowidget.js"></script>
は、jQueryのスクリプトが$
が定義されていることを確認した後、私のスクリプトを入れていません:<head>
が含まれるので、これは、私を混乱させる?
アップデート3:jquery.min.jsから:
/*!
* jQuery JavaScript Library v1.4.2
* http://jquery.com/
*
* Copyright 2010, John Resig
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* Includes Sizzle.js
* http://sizzlejs.com/
* Copyright 2010, The Dojo Foundation
* Released under the MIT, BSD, and GPL Licenses.
*
* Date: Sat Feb 13 22:33:48 2010 -0500
*/
(function(A,w){function ma(){if(!c.isReady){try{s.documentElement.doScroll("left")}catch(a){setTimeout(ma,1);return}c.ready()}}function Qa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function X(a,b,d,f,e,j){var i=a.length;if(typeof b==="object"){for(var o in b)X(a,o,b[o],f,e,d);return a}if(d!==w){f=!j&&f&&c.isFunction(d);for(o=0;o<i;o++)e(a[o],b,f?d.call(a[o],o,e(a[o],b)):d,j);return a}return i? /* ... */
は、私には正しく見えます。
これは、Firebugのコンソールから次のとおりです。
Error: $ is not a function
[Break On This Error] $(function() {
foowidget.js (line 5)
>>> $
anonymous()
>>> jQuery
undefined
>>> $('a')
null
>>> $(document)
null
更新4:$
は、管理アプリを除いて、私のDjangoのサイトのすべてのページで定義されています。奇数...
更新5:これは興味深いものです。
jQuery.init.js:
// Puts the included jQuery into our own namespace
var django = {
"jQuery": jQuery.noConflict(true)
};
コンソールから:
>>> $
anonymous()
>>> django
Object {}
>>> django.jQuery
function()
>>> django.jQuery('a')
[a /admin/p..._change/, a /admin/logout/, a ../../, a ../, a.addlink add/]
FirebugやChrome Developer Toolsのような開発ツールを使用していますか? –
/media/js/jquery.min.jsスクリプトタグが実際にjqueryライブラリを返すことを確認する必要があります。 – Andrew
ファイルを見ました。私はdiffをしませんでしたが、jQueryライブラリのようです。 –