这是html代码
< body >
< div id="map" >
我正在穿越父母,直到找到身体找到地图
var pageFrom= $(theElement).parentsUntil( 'body' );
var pageFromId = $(pageFrom).attr("id");
在firebug中我看到pageFrom [div#map.current]
问题是pageFromId是“”,它应该是“map”
答案 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')