如何使用面向对象的javascript从控件调用函数?

时间:2013-11-29 14:05:18

标签: javascript jquery

var objParent = new Parent();//initializing object 
function Parent() {
this.Child = function () {
     var checkBox="";
     checkBox +="<input type=\"checkbox\" 
                        name=\"ctlName\"   
                        id=\'" + cltId + "\' 
                        onchange= 'this.SubChild(this.id)'
                 />";

     $('#liCheckbox').append(checkBox);
}



this.Child.prototype = {
    SubChild: function (id) {//this function not able to access
        alert(this.first + ' ' + this.last+ ' '+id);
    }
};


}

<ul>

    <li id='liCheckbox'>

</li>
</ul>

我使用面向对象的javascript来开发我的应用程序。 在上面的代码中我调用SubChild(this.id)函数我在复选框更改事件中调用。 但我无法访问该功能。 如果有任何其他解决方案,请建议我。

被修改

我得到了答案

var objParent = new Parent();//initializing object 
function Parent() {
this.Child = function () {
     var checkBox="";
     checkBox +="<input type=\"checkbox\" 
                        name=\"ctlName\"   
                        id=\'" + cltId + "\' 
                        onchange= 'objParent.SubChild(this.id)'//While calling the we have to call with object 
                 />";

     $('#liCheckbox').append(checkBox);
}



this.Child.prototype = {
    SubChild: function (id) {//this function not able to access
        alert(this.first + ' ' + this.last+ ' '+id);
    }
};


}

<ul>

    <li id='liCheckbox'>

</li>
</ul>

在调用我们使用为该类创建的对象调用的函数时。 objParent.SubChild(this.id)。

3 个答案:

答案 0 :(得分:0)

onchange处理程序中,您有this.SubChild(this.id),其中this指的是input。并且由于永远不会调用Child构造函数(或者至少我没有在任何地方看到它),因此没有对象将具有SubChild方法。 要访问ChildParent的实例,您应该在IE8及更早版本中使用addEventListenerattachEvent的正确事件绑定,或者使用jQuery的事件绑定,如果您必须已经使用jQuery。在这种情况下,您可以使用jQuery的proxy函数或新浏览器中每个函数的bind方法指定回调中的内容。

答案 1 :(得分:0)

你在这里混合了很多东西(JS,HTML注入,事件处理)......

这是你应该怎么做(未经测试):

function Parent() {
   var parent = this;

   this.Child = function () {
      var checkBox = $('<input type="checkbox" name="ctlName" id="' + cltId + '" />');
      checkBox.on('change', function() {
          parent.Child.SubChild(this.id);
      });
      $('#liCheckbox').append(checkBox);
   }
}

答案 2 :(得分:0)

这是一种方法:

function Child() {
        this.name = 'test';
}
Child.prototype = {
    SubChild: function () {
            alert(this.name);
    }
}

function Parent() {
    this.child = new Child();


};

new Parent().child.SubChild();

检查这个小提琴:http://jsfiddle.net/VrrM5/