0

我花了太多时间在 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('');},

任何形式的帮助将不胜感激。

谢谢!

4

1 回答 1

0

请注意,this在这两种情况下都没有设置为相同的对象。

在您最喜欢的 javascript 控制台中尝试以下代码:

var test = { "prop1": function(){console.log(this);}, "prop2":{"Save":function(){console.log(this);}}, "prop3": 10}

然后运行test.prop1()test.prop2.Save()。您将看到在第一次尝试中记录了 Object test,而在第二个示例中,您将记录了内部 Object prop2

你可以在这里阅读一篇很棒的文章

于 2013-01-03T17:27:34.770 回答