这看起来像一个非常简单的问题,但我无法让它发挥作用。
我有一个像这样的Javascript对象:
var person = {};
person.one = {gender: 'male', name: 'John'};
person.two = {gender: 'male', name: 'Doe'};
person.three = {gender: 'female', name: 'Jane'};
然后我有一些像这样的HTML:
<a id="one">click</a>
<a id="two">click</a>
<a id="three">click</a>
现在,我需要通过点击链接的ID获取正确的对象值。基本上,我需要在没有for循环的情况下动态访问第一级对象键,因为键是字符串。
我试过这个:
$('a').click(function() {
alert(person[$(this).attr('id')['gender']]);
});
它不起作用。也没有这样做:
$('a').click(function() {
alert(person.($(this).attr('id')).gender);
});
我得到的所有内容都是“未捕获的异常:语法错误,无法识别的表达式”。显然,我的语法已经过时了。
我已经在这里阅读了很多帖子,但找不到解决方案。有什么想法吗?
答案 0 :(得分:3)
尝试:
$('a').click(function() {
alert(person[$(this).attr('id')]['gender']);
});
你的方括号在错误的位置。
答案 1 :(得分:3)
要使用您想要的动态名称访问属性,正确的语法是使用括号,如数组。
alert(person[$(this).attr('id')].gender);
或者将该ID转换为单独的变量可能只是更清晰:
var id = $(this).attr('id');
alert(person[id].gender);
您的电话:)
答案 2 :(得分:2)
尝试alert(person[$(this).attr('id')].gender)