2010-07-01 98 views
2

我正在尝试创建一个可以在页面上多次使用的邮政编码查找JQuery脚本,而不必为页面上的每个地址复制脚本。 Find按钮具有类“postcodeLookup”和属性“address”,这是我打算如何让脚本填充正确的地址(它使用JQuery Populate插件)&输入被命名为address [line1],其中“address”是可改变的(家庭[line1],办公室[line1]等)。如何在JSON中使用JS变量?

问题是如何让JSON填充地址以使用变量内容而不是字面词“地址”?

//postcode lookups 
$(".postcodeLookup").click(function(){ 
    alert("I am The Postcode Finder...\nPretending to find the address...\nFound it!"); 
    var address = $(this).attr('address'); 
    $("form").populate({ 
     address: { 
      line1: "First Line of Addr.", 
      line2: "Line 2!", 
      line3: "Line 3 of The Address", 
      postcode: "PO1 1PO" 
     } 
    }); 
    $(".addressArea").slideDown('fast'); 
}); 
+0

仅供参考,您不使用JSON那里,你正在使用JavaScript的对象文字符号。 JSON是对象文字表示法的一个*子集*,它更易于解析。 http://json.org – 2010-07-01 10:01:30

回答

6
var addrName = "office"; 
var address = {}; 

address[ addrName ] = { 
    line1: "First line", 
    line2: "Line 2..." 
}; 

$("form").populate(address); 

现在,当addrNameoffice,这将是一样写

address['office'] = { } 

...这,又是完全一样的东西象写

address.office = { } 

而那小小的知识将会成为immens非常有用的所有方面的JavaScript。

例如

for(var i = 0; i < 10; i++) { 
    window['var' + i] = i; 
} 

将实际创建的窗口对象10个变量(即公共变量)称为var0var1,... var9

好吧,所以这不是非常有用,但你明白了。

+0

完美,谢谢。 – bcmcfc 2010-07-01 09:48:10

+0

您的第一个示例中的尾随逗号(在'line2'属性之后)将导致IE失败。 IE不喜欢悬挂逗号,无论是对象文字还是数组文字。 – 2010-07-01 09:52:43

+0

@ T.J。克劳德:很对!我即将增加更多房产,但认为那些房产确实是非常重要的,所以我缩小了它的范围,但错过了逗号。接得好。 – 2010-07-01 09:57:40

0

也许你需要做这样的事情,通常jQuery插件这种方式工作:

line1: function(data) {return youVariable},