所以听起来你想要第一个具有兄弟元素的祖先。如果是这样,您可以这样做:
var parent = img.parentNode;
while (parent && !parent.previousElementSibling && !parent.nextElementSibling) {
parent = parent.parentNode;
}
或者也许更恰当地写成一个do-while循环:
do {
var parent = img.parentNode;
} while (parent && !parent.previousElementSibling && !parent.nextElementSibling);
因此,当它找到一个具有至少一个兄弟元素的循环,或者当它用完祖先元素时,循环将结束。
如果您知道兄弟姐妹是在父母之前还是之后,您可以只测试其中一个。
***ElementSibling另请注意,如果您支持旧版浏览器,则需要为属性添加 shim 。
您可以创建一个函数来执行此操作:
function prevElement(el) {
while ((el = el.previousSibling) && el.nodeType !== 1) {
// nothing needed here
}
return el;
}
function nextElement(el) {
while ((el = el.nextSibling) && el.nodeType !== 1) {
// nothing needed here
}
return el;
}
然后使用如下函数:
do {
var parent = img.parentNode;
} while (parent && !prevElement(parent) && !nextElement(parent));