2013-01-21 74 views
3

我想这个网站是正确如何读取JSON数据元素值?

<span id="tag_8" data-translations="{&quot;en&quot;:&quot;cat&quot;}" class="myTag selected">chat</span>at 

# generated with : 
# %span.myTag{:id => "tag_" + tag_id.to_s, :'data-translations' => translations(tag_id).to_json}= tag 

我试图从一个jQuery脚本内读取的翻译,但它的失败:

selectedTag = $('#tag-list li span.myTag.selected:first') 
console.log 'translations: ' + selectedTag.data("translations", "en") 
=> translations: [object Object] 

#however 
console.log 'translations: ' + selectedTag.data("translations") 
=> translations: {"en"=>"cat"} 
+1

尝试'parseJSON()'http://api.jquery.com /jQuery.parseJSON/ – mattytommo

+0

仅供参考:'selectedTag.data(“translations”,“en”)'会将'data-translations'设置为'en'而不是读取它。 '[object Object]'是selectedTag元素的jQuery对象的字符串表示,因为setter-data-method将返回jQuery对象来支持链接。 –

回答

1

,如果你想返回的猫,你可以不喜欢它这

$( '#tag_8')。数据( '翻译')。恩

否则,如果你想返回一个对象,并将其保存到一个变量,你可以做这样的var obj = $('#tag_8').data('translations')和使用它像这样obj.en

$('#tag_8').data('translations') 

returns 

Object {en: "cat"} 

///////////////// 

$('#tag_8').data('translations').en 

returns "cat" 
+0

谢谢,实际上不需要parseJSON: console.log'translations:'+ selectedTag.data(“translations”) console.log selectedTag.data('translations')。en – erwin

+0

但是,如果'en'是一个变量,我如何显示它? $('#tag_8')。data('translations')[variable] ?? – erwin

+0

明白了! :console.log selectedTag.data('translations')['en'] console.log selectedTag.data('translations')[var_lang] – erwin