javascript - Using jquery to run code when django document is ready -
i building django admin site , using javascript , jquery (2.0.3) add functionality forms.
i importing scripts page this:
<html> <head> <script type="text/javascript" src="/static/admin/js/jquery.js"></script> <script type="text/javascript" src="/static/admin/js/jquery.init.js"></script> <script type="text/javascript" src="/static/project/js/project.js"></script> </head> <!-- ... --> </html> at first placed following code @ end of project.js:
function trycustomiseform() { // ... } $(document).ready(trycustomiseform); unfortunately results in uncaught typeerror: undefined not function exception on last line.
i tried alternative syntaxes of ready() without more luck.
lastly explored change_form.html template , found inline javascript:
<script type="text/javascript"> (function($) { $(document).ready(function() { $('form#{{ opts.model_name }}_form :input:visible:enabled:first').focus() }); })(django.jquery); </script> i able modify suit needs , project.js ends with:
(function($) { $(document).ready(function() { trycustomiseform(); }); })(django.jquery); while results in correct behaviour i don't understand it.
this leads question: why did first approach fail? , second approach doing?
it's hard tell code you've posted, looks $ variable not assigned jquery in template; hence $() construct threw undefined function error.
the reason latter works because puts closure around domready handler, passes in django.jquery, assume noconflict jquery assigned variable template, , assigns $ within scope of that:
(function($) { // < start of closure // within block, $ = django.jquery $(document).ready(function() { trycustomiseform(); }); })(django.jquery); // passes django.jquery parameter closure block
Comments
Post a Comment