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)。
答案 0 :(得分:0)
在onchange
处理程序中,您有this.SubChild(this.id)
,其中this
指的是input
。并且由于永远不会调用Child
构造函数(或者至少我没有在任何地方看到它),因此没有对象将具有SubChild
方法。
要访问Child
或Parent
的实例,您应该在IE8及更早版本中使用addEventListener
或attachEvent
的正确事件绑定,或者使用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/