我花了太多时间在Google上寻求帮助并尝试自己修复它。
导致所有问题的代码看起来像这样:
$("#nameBox").dialog({
"modal": false,
"autoOpen": false,
"resizable": false,
"height": "auto",
"width": 350,
"open": function(){$("input[name='name']",this).val('');},
"buttons": {"Save":function(){
var current_user = $("input[name='name']",this).val();
}}
});
在IE8上,我收到一条消息“对象不支持此属性或方法”,这显然是由此行引起的:
var current_user = $("input[name='name']",this).val();
令我困惑的是对话框打开,这意味着即使这些代码都使用相同的方法,这些代码也会成功执行:
"open": function(){$("input[name='name']",this).val('');},
任何形式的帮助都将受到赞赏。
谢谢!
答案 0 :(得分:0)
请注意,this
在两种情况下都没有设置为同一个对象。
在您最喜爱的javascript控制台中尝试以下代码:
var test = { "prop1": function(){console.log(this);}, "prop2":{"Save":function(){console.log(this);}}, "prop3": 10}
然后运行test.prop1()
和test.prop2.Save()
。您将看到在第一次尝试时记录了对象test
,在第二个示例中,您将记录内部对象prop2
。
你可以阅读一篇很棒的文章here