按元素ID的Javascript对象键? (jQuery的)

时间:2010-05-26 22:48:43

标签: javascript jquery

这看起来像一个非常简单的问题,但我无法让它发挥作用。

我有一个像这样的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);
});

我得到的所有内容都是“未捕获的异常:语法错误,无法识别的表达式”。显然,我的语法已经过时了。

我已经在这里阅读了很多帖子,但找不到解决方案。有什么想法吗?

3 个答案:

答案 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)