我有一个'rel'属性的链接:
<a href="#" rel="music">Click</a>
<p></p>
我有一个包含JSON的变量:
var myStyle = {
"music": { "band": "Beatles", "type": "Rock"},
"movie": { "title" "Shrek", "type": "Kids"}
};
我想使用jQuery根据'rel'属性从JSON获取值:
$('a').click(function() {
var whatLink = $('a').attr('rel');
$('p').text(myStyle.whatLink.band);
});
我看到“样式”的值是“音乐”,但点击链接的结果是
TypeError:无法读取未定义
的属性'band'
甚至可能吗?
答案 0 :(得分:3)
尝试
$('a').click(function() {
var whatLink = $('a').attr('rel');
$('p').text(myStyle[whatLink].band);
});
使用变量访问属性时,点运算符不起作用,您必须使用字典/数组运算符。
答案 1 :(得分:1)
TypeError:无法读取未定义
的属性'band'
这是因为whatLink
不存在myStyle
属性,因此返回undefined
,当然没有band
属性。
使用括号表示法
$('a').click(function() {
var whatLink = $('a').attr('rel');
$('p').text(myStyle[whatLink].band);
});
...否则whatLink
按字面意思理解。
答案 2 :(得分:1)
如果您正在使用......
$('a').click(function() {
var whatLink = $('a').attr('rel');
$('p').text(myStyle[whatLink].band);
});
... whatLink
总是会在页面中显示最后一个(或第一个,不记得)rel
的{{1}}值。要真正检查您刚刚点击的链接的a
值,请在事件内的选择器中使用rel
代替this
。像这样......
'a'