【发布时间】:2013-12-20 16:34:53
【问题描述】:
整个问题是一种“我尝试过的”,试图封装我的 js,但它没有像我希望的那样工作。
在我的页面上我有一个 div。
<div id='myDiv'></div>
我也有一些脚本:
<script type="text/javascript">
$(function () {
$('#myDiv').hide();
});
</script>
这个脚本的大小和复杂性都会增加,所以我希望它离开页面并放入一个外部 js 文件中。很好,但我也希望它可以重复使用。 javascript 所做的就是将一个 div(以及它的子元素)变成一个控件(例如滑块)。
所以在研究了我几乎可以在 javascript 中模仿 oop 原理的方法之后,我在一个外部文件中得到了以下内容:
var MyControl = function () {
this.init= function (myDiv) {
myDiv.hide();
};
};
然后我这样称呼它:
$(function () {
var myControl = new MyControl();
myControl.init($('#myDiv'));
});
问题是尽管调用了 hide() ,但 div 并没有隐藏。如果我对此进行调试,我会看到我有 div,它被很好地传递了,并且命中了我期望它的每一行代码(甚至可以在警报中显示 div 的类型)。
为什么页面上的 div 不受影响?
是否推荐这种方法来解决我在本文开头讨论的问题?
【问题讨论】:
-
你有
myDiv参数并调用div.hide() -
很好看。这是一个错字(在这个问题中,不是我的实际代码),我现在将对其进行排序。谢谢。
-
您的代码中是否需要
constructor或者可以是简单的namespace?
标签: javascript jquery html function oop