2011-07-13 128 views
2

我有一个“相对”属性的链接:如何使用属性获取JSON值?

<a href="#" rel="music">Click</a> 
<p></p> 

我有一个包含JSON变量:

var myStyle = { 
"music": { "band": "Beatles", "type": "Rock"}, 
    "movie": { "title" "Shrek", "type": "Kids"} 
}; 

我想使用jQuery根据“相对”从JSON获得价值属性:

$('a').click(function() { 
     var whatLink = $('a').attr('rel'); 
    $('p').text(myStyle.whatLink.band); 
}); 

我看到的“风格”的值是“音乐”,但点击该链接的结果是

TypeError: Cannot read property 'band' of undefined

这是可能的吗?

+1

'rel'“描述了从当前文档到由href属性指定的锚的关系。它不是您存储任意数据的地方。使用HTML 5的data- *属性。 – Quentin

+0

该变量包含JavaScript对象,而不是JSON。 – alex

+0

@Quentin:虽然灯箱会让你相信它。 :P – alex

回答

1

如果你正在使用...

$('a').click(function() { 
     var whatLink = $('a').attr('rel'); 
    $('p').text(myStyle[whatLink].band); 
}); 

... whatLink总是要给你在你的页面的rel值的最后一个(或第一,记不清了)a。要真正检查刚刚单击的链接的rel值,请在事件选择器中使用this而不是'a'。像这样......

$('a').click(function() { 
     var whatLink = $(this).attr('rel'); 
    $('p').text(myStyle[whatLink].band); 
}); 
1

TypeError: Cannot read property 'band' of undefined

这是因为whatLink属性不存在的myStyle,因此返回undefined,这当然没有band财产。

使用括号标记......

$('a').click(function() { 
     var whatLink = $('a').attr('rel'); 
    $('p').text(myStyle[whatLink].band); 
}); 

...否则whatLink是字面上。

3

尝试

$('a').click(function() { 
     var whatLink = $('a').attr('rel'); 
    $('p').text(myStyle[whatLink].band); 
}); 

当使用变量访问属性,点操作不工作,你必须使用词典/数组运算符

+0

想念一段时间:) – alex