我有以下 HTML:
<body>Testing1<span id="t1" style="background-color: green;">Testing2</span>Testing3</body>
当我尝试以下操作时:
alert(window.jQuery('#t1').prev().nodeType); // undefined - tried get(0) as well
alert(window.jQuery('#t1').get(0).nodeType); // 1
alert(window.jQuery('#t1').next().nodeType); // undefined
为什么当我尝试获取上一个和下一个文本元素的节点类型时,我得到了未定义?
奇怪的是,如果我在跨度之前放置 b
标记,则 prev().get(0).nodeType
返回 1
code> 这是否意味着文本节点和注释无法检测到?
最佳答案
问题是 prev
和 next
返回 jQuery 对象,而不是 DOM 元素。您必须再次使用get
:
alert(window.jQuery('#t1').next().get(0).nodeType);
请注意,您也可以使用数组语法来获取指定索引处的底层 DOM 元素:
alert(window.jQuery('#t1').next()[0].nodeType);
编辑
重新阅读您的问题,发现您已经尝试过。您认为 prev
和 next
将不会获取文本或注释节点是正确的。他们只会获得元素。
#t1
之前的文本节点不是元素,因此 prev
不会返回任何内容(#t1< 之前或之后没有同级元素)/
)。
你可以这样做:
alert(window.jQuery('#t1').get(0).previousSibling.nodeType); //3
alert(window.jQuery('#t1').get(0).nextSibling.nodeType); //3
但我不完全确定这些浏览器的兼容性。
关于javascript - 获取下一个和上一个节点类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7874171/