jquery选择器的问题

时间:2010-04-25 13:18:33

标签: javascript jquery

我在使用jquery选择元素属性时遇到问题,这是我的HTML:

<a class="myselector" rel="I need this value"></a>

<div class="someClass" id="someID">
...bunch of elements/content
<input type="button" name="myInput" id="inputID" title="myInput Title" />
...bunch of elements/content
</div>

......一堆元素/内容

在这里,我试图获取myselector的rel值,这是我尝试的方法,但它不起作用:

$('#inputID').live('click',function(){
console.log($(this).closest('a.myselector').attr('rel'));
});

还试过这个,因为所有内容都包装在包装器div中:

$('#inputID').live('click',function(){
console.log($(this).parent('div.wrapper').find('a.myselector').attr('rel'));
});

在两种情况下,我在firebug中获得undefined值,我使用实时因为div#someID在文档中加载,当页面首次加载时它不在那里。任何建议,我如何获得我的选择器相关值?

修改

但是当我查找没有rel属性的('a.myselector')时,我会提醒Object object并获取console.log []

3 个答案:

答案 0 :(得分:3)

这应该有效:

console.log($(this).closest('div.wrapper').find('a.myselector').attr('rel'));

您问题中的第一个示例无效,因为您尝试选择的锚标记为not a parent/ancestor

console.log($(this).closest('a.myselector').attr('rel'));

如果您将.parent()更改为.parents(),则第二个示例将有效,因为.parent()仅遍历DOM one level,因此以下内容:

console.log($(this).parents('div.wrapper').find('a.myselector').attr('rel'));

答案 1 :(得分:0)

就在我的脑海中,您是否尝试过不使用live来访问您的rel值(即使用直接ID $(“inputid”)。attr(“rel”))?

在面对这样的问题时,我通常会逐一消灭嫌犯。

答案 2 :(得分:0)

请尝试this

$('#inputID').live('click',function(){
  // alert($(this).parent().parent().html());
alert($(this).parent().parent().find('a.myselector').attr('rel'));
});

HTH