目前我正在处理 javascript 中的命名空间。作为第一步,我构建了一个测试页面。
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>Namespace</title>
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script type="text/javascript">
var NSVB = NSVB || {};
NSVB.sub = {
init: function(){
alert("NSVB rocks");
$("#click-test").bind("click",NSVB.sub.clicktest());
},
clicktest: function(){
alert("clicked");
}
}
NSVB.sub.init = function(){
alert("NSVB rocks overwirtten");
$("#click-test").bind("click",NSVB.sub.clicktest());
}
$(document).bind("load", NSVB.sub.init());
</script>
</head>
<body>
<p id="click-test">click to test</p>
</body>
</html>
我期望我的代码做的是:
- 使用函数 init() 和 clicktest() 定义命名空间
- 覆盖函数 init()
- 当我单击它时处理#click-test 上的单击事件
我的代码的作用:
- 使用函数 init() 和 clicktest() 定义命名空间
- 覆盖函数 init()
- 调用 clicktest()
- 当我点击什么都没有发生!
我真的不明白!希望有人能帮忙。
提前致谢。
编辑
经过一些测试,我已经完成了以下操作:
删除括号
$("#click-test").bind("click",NSVB.sub.clicktest);
代替
$(document).bind("load", NSVB.sub.init);
使用(其中一个,您喜欢使用什么)
document.addEventListener("DOMContentLoaded",NSVB.sub.init,false);
或者
$(document).ready(function(e) {
NSVB.sub.init();
});
一切正常,符合预期!