Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用构造函数和调用函数_Javascript_Jquery_Oop - Fatal编程技术网

Javascript 使用构造函数和调用函数

Javascript 使用构造函数和调用函数,javascript,jquery,oop,Javascript,Jquery,Oop,我有一个表单,根据选中的复选框隐藏/显示很多元素。我决定写一个构造函数来避免重复。它需要两个参数。需要显示/隐藏的复选框和元素 function ShowHideConstructor(controlElement, actionElement){ this.x = controlElement; this.y = actionElement; x.change(function(){ var isChecked = x.is(":checked"); if (isC

我有一个表单,根据选中的复选框隐藏/显示很多元素。我决定写一个构造函数来避免重复。它需要两个参数。需要显示/隐藏的复选框和元素

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);

当我有两个时,它就断了。为什么?

这是因为您忘记了
新的
,所以
是外部的
(取决于您调用它的位置,它可能是
窗口
)。第二次调用时,替换第一个的x和y属性

使用

在构造函数中,将所有
x
y
替换为
this.x
this.y


也就是说,当您甚至不保留新实例时,这种对构造函数的副作用并不是一种特别好的做法。我宁愿分两步完成:构建实例,然后执行绑定到
change
事件的函数。

谢谢!现在,当我在x.change(function(){..}上添加'new'时,我得到了'uncaughtreferenceerror:x未定义'。使用
this.x.change…
而不仅仅是
x.change…
。使用(this.x.change)和(this.x.is(“:checked”);)现在它告诉我(不能调用this.x.is(“:checked”);)上未定义的方法'is'))
new ShowHideConstructor(ca,ac);