Kel*_*mas 4 html javascript django jquery events
我正在建立一个django管理网站,并正在使用javascript和jquery(2.0.3)向表单添加一些额外的功能。
我将脚本导入到我的页面中,如下所示:
<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>
Run Code Online (Sandbox Code Playgroud)
首先,我将以下代码放置在的末尾project.js
:
function tryCustomiseForm() {
// ...
}
$(document).ready(tryCustomiseForm);
Run Code Online (Sandbox Code Playgroud)
不幸的是,这导致Uncaught TypeError: undefined is not a function
最后一行出现异常。
然后,我尝试了其他ready()
运气不好的替代语法。
最后,我浏览了change_form.html
模板并找到了以下内联javascript:
<script type="text/javascript">
(function($) {
$(document).ready(function() {
$('form#{{ opts.model_name }}_form :input:visible:enabled:first').focus()
});
})(django.jQuery);
</script>
Run Code Online (Sandbox Code Playgroud)
我能够对其进行修改以满足自己的需求,现在我的project.js
目标是:
(function($) {
$(document).ready(function() {
tryCustomiseForm();
});
})(django.jQuery);
Run Code Online (Sandbox Code Playgroud)
尽管这样会导致正确的行为,但我并不理解。
这引出我的问题:为什么我的第一种方法失败了?第二种方法在做什么?
从您发布的代码中很难看出来,但是看起来$
变量没有在模板中分配给jQuery。因此$()
构造抛出了undefined function
错误。
后者起作用的原因是因为它在您的DOMReady处理程序周围放置了一个闭包,该闭包传入django.jQuery
,我认为这是noConflict
模板中jQuery分配的变量,并将其分配给$
范围内的:
(function($) { // < start of closure
// within this block, $ = django.jQuery
$(document).ready(function() {
tryCustomiseForm();
});
})(django.jQuery); // passes django.jQuery as parameter to closure block
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3827 次 |
最近记录: |