已解决:要获取上一个元素的ID,请使用previousElementSibling.id
代替previousSibling.id
。感谢Xufox和Skyline3000快速提供解决方案。
有一些锚点元素的面包屑,我试图在点击一个breakcrumb(即父类别)时获得前一个兄弟的id。
例如。 Fruits> Apples> Green apples
不幸的是,我的代码不起作用。
alert(this.previousSibling)
返回[object Text]
alert(this.previousSibling,id)
返回id is undefined
。alert(this.previousSibling,getAttribute(\'id\')
返回TypeError: this.previousSibling.getAttribute is not a function
。alert(this.previousSibling,attr(\'id\'))
返回TypeError: this.previousSibling.attr is not a function
。我认为没有正确到达兄弟姐妹,因为我期待一些元素或对象而不是文本。
这是两个面包屑的HTML和javascript的样子:
<a id="n5_40_64_40" onclick="javascript:
var tree=jQuery('#tree').dynatree('getTree');
if (!tree.activateKey('40')) {
var parent=0;
if (1) {
parent=this.previousSibling.id.split(/[_]+/).pop();
}
}
return false;" href="">Apples</a>
>
<a id="n5_40_64_64" onclick="javascript:
var tree=jQuery('#tree').dynatree('getTree');
if (!tree.activateKey('64')) {
var parent=0;
if (2) {
parent=this.previousSibling.id.split(/[_]+/).pop();
}
}
return false;" href="">Green apples</a>
答案 0 :(得分:3)
所有文字和空格,包括HTML标记之间的空格和新行,都算作TextNode。因此,标签的前一个兄弟实际上是<a>
标签之间的空白的textNode。你真正想要做的是找到作为元素的前一个兄弟(HTML标签)。
为此,您应该只使用this.previousElementSibling。