我有一个“是/否”单选框输入。当用户点击“是”时,显示yesDiv,当用户点击“否”时,显示noDiv。
为了实现这个功能,我创建了对象myObject。
var myObject= {
init: function(config){
this.config=config;
this.config.InputRadio.bind('click',this.config,this.switchDiv);
},
switchDiv: function(ev){
self=ev.data;
if ($(this).val()==1){
self.divYes.hide();
self.divNo.show();
}else{
self.divYes.show();
self.divNo.hide();
}
}
}
myObject.init({
InputRadio:$("input[name=yesno]"),
divYes:$("#yesDiv"),
divNo:$("#noDiv")
});
这个方法是可行的,我知道在方法'switchDiv'中无法使用this来引用对象属性,因为函数内部'this'的作用域。在相关问题中( Referencing own object properties),我找到了将this.config作为参数发送并使用self=ev.data的解决方案。
但现在我的问题是:每当我想从对象的方法中访问对象自己的属性时,必须将它们作为参数传递给该方法,这不是有点奇怪吗?难道没有更好的声明对象的方法来避免这种情况吗?
switchDiv
时,'this
'是单选按钮。因此它不能同时是myObject
。您可以利用它作为单选按钮的优势,通过调用$(this).val()
来实现。它既不能是单选按钮,也不能是myObject
。 - Scott Sauyet