根据所选的复选框,我有一个隐藏/显示大量元素的表单。我决定编写一个构造函数来避免重复。它需要两个参数。需要显示/隐藏的复选框和元素。
function ShowHideConstructor(controlElement, actionElement){
this.x = controlElement;
this.y = actionElement;
x.change(function(){
var isChecked = x.is(":checked");
if (isChecked){
y.show();
} else {
y.hide();
}
});
}
我想解雇它:
var ce = $('#c85_add_residence_address-0');
var ae = $(".address_of_residence");
ShowHideConstructor(ce,ae);
有效!我第二次调用它时会出现问题,例如:
var ca = $('#c85_add_correspondence_address-0');
var ac = $('.address_for_correspondence');
ShowHideConstructor(ca,ac);
当我有两个时,它会中断。为什么?
答案 0 :(得分:1)
那是因为你忘记了new
所以this
是外面的this
(取决于你所说的那个,可能是window
)。因此,第二次调用它时,可以替换第一个x和y属性。
使用
new ShowHideConstructor(ca,ac);
在您的构造函数中,将所有x
和y
替换为this.x
和this.y
。
这就是说,当你甚至不保留新实例时,对构造函数的这种副作用并不是一个好习惯。我宁愿分两步完成:构建实例然后执行绑定到change
事件的函数。