如何使用jQuery查找元素的id

时间:2011-02-26 22:32:32

标签: jquery jqtouch

这是html代码

  < body >    
     < div id="map" >

我正在穿越父母,直到找到身体找到地图

var pageFrom= $(theElement).parentsUntil( 'body' );    
var pageFromId = $(pageFrom).attr("id"); 
在firebug中我看到pageFrom [div#map.current]

问题是pageFromId是“”,它应该是“map”

5 个答案:

答案 0 :(得分:3)

如果你正在使用parentsUntil()[docs]方法,它会重新调整从最接近起点的那些订购的祖先集合到最远的那些。

因此,您需要访问集合中的最后一个以获取其ID。

var pageFrom= $(theElement).parentsUntil( 'body' );
var pageFromId = pageFrom.last().attr('id');

var pageFrom= $(theElement).parentsUntil( 'body' );
var pageFromId = pageFrom.slice(-1).attr('id');

请注意,您还可以将ID作为元素的属性获取:

var pageFromId = pageFrom.get(-1).id;

答案 1 :(得分:2)

试试这个:

$(theElement).closest( 'map' );
or
$(theElement).closest( 'body' ).attr('id'); 

答案 2 :(得分:0)

也许

pageFrom.first().attr("id")

但是你应该更具体地说明你需要什么。你真的需要元素和身体之间的所有父母吗?否则,您可以使用.closest。

此外,在您的初始代码中,您不需要使用$(pageFrom),因为它已经是一个jquery对象。

答案 3 :(得分:0)

我不太确定你在这里问的是什么。但是如果这里的模式是<div>之后的第一个<body>有一个ID,那就是你想要抓住的东西,那么这个简单的东西应该可以解决问题:

$('body').find('div:first').attr('id');

没有理由向上遍历文档的正文 - 应该总是有一个,所以为什么不从那里开始工作呢?

答案 4 :(得分:0)

来自文档:

  

给出一个代表的jQuery对象   一组DOM元素,   .parentsUntil()方法遍历   通过这些祖先   元素直到它到达元素   由传递的选择器匹配   方法的论点。所结果的   jQuery对象包含所有的   祖先,但不包括   一个匹配.parentsUntil()   选择器。

这意味着你试图在一个元素数组上调用attr,而不是最终元素本身。你究竟想做什么?你想找到正文中的第一个元素,还是想找到与选择器匹配的最接近的元素?

// find first element of a type
$('div:first').attr('id')

// find closest element of a type
$(this).closest('div').attr('id')