我在使用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 []
答案 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