Javascript获取不带jQuery的X父节点
我只是在浏览器中使用“Javascript:;”手动从一些网站抓取数据 地址栏。这比复制/粘贴容易 我遇到了一些必须执行的实例:object.parentNode.parentNode。。。。 为了获得一些信息,由于各个站点的信息不同,因此可以是任何级别的信息 显然,我不想要一个循环并遍历它,因为这会使一个简单的任务变得更加简单 广泛的Javascript获取不带jQuery的X父节点,javascript,dom,element,nodelist,parent-node,Javascript,Dom,Element,Nodelist,Parent Node,我只是在浏览器中使用“Javascript:;”手动从一些网站抓取数据 地址栏。这比复制/粘贴容易 我遇到了一些必须执行的实例:object.parentNode.parentNode。。。。 为了获得一些信息,由于各个站点的信息不同,因此可以是任何级别的信息 显然,我不想要一个循环并遍历它,因为这会使一个简单的任务变得更加简单 广泛的 有没有一种方法可以做到:object.parentNode[4]或类似于没有jQuery的东西?我认为您无法避免一个好的ol'循环: for(var i=0;
有没有一种方法可以做到:object.parentNode[4]或类似于没有jQuery的东西?我认为您无法避免一个好的ol'循环:
for(var i=0; i<4 && node.parentNode; node=node.parentNode, i++); alert(node);
for(var i=0;i我认为您无法避免一个好的ol'循环:
for(var i=0; i<4 && node.parentNode; node=node.parentNode, i++); alert(node);
for(var i=0;i我编写了一个函数,用普通JavaScript实现这一点:
以下是es5版本:
或者,如果您只需要支持现代浏览器,则可以使用es6版本:
你这样称呼它:
queryParent(选择器,父级);
它将返回原始JavaScript节点
下面是一个演示,它获得了您想要的确切的类选择器,即使还有另一个元素具有相同的选择器(您不想要):
ryanpcmcquen编写的queryParent.js v1.2.1*/
/*全局模块*/
/*jshint版本:6*/
const d=文件;
常量qu='querySelector';
常量queryParent=(s,p)=>{
常数q=(x)=>d[qu](x);
常量qa=(y)=>d[`${qu}All`](y);
常数pa=qa(p);
(typeof s==='string')&&(s=q(s));
返回[…pa]。筛选器((n)=>{
返回(n.contains)?n:false;
}).pop();
};
//module.exports=queryParent;
console.log(
queryParent('.bar'、'.foo')
);
//嘘!检查控制台!
但是这里也有一个我们不想要的
foo
。
我们想要的
foo
在这里。
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
bar
在这里。
我编写了一个函数,在Vanilla JavaScript中实现了这一点:
以下是es5版本:
或者,如果您只需要支持现代浏览器,则可以使用es6版本:
你这样称呼它:
queryParent(选择器,父级);
它将返回原始JavaScript节点
下面是一个演示,它获得了您想要的确切的类选择器,即使还有另一个元素具有相同的选择器(您不想要):
ryanpcmcquen编写的queryParent.js v1.2.1*/
/*全局模块*/
/*jshint版本:6*/
const d=文件;
常量qu='querySelector';
常量queryParent=(s,p)=>{
常数q=(x)=>d[qu](x);
常量qa=(y)=>d[`${qu}All`](y);
常数pa=qa(p);
(typeof s==='string')&&(s=q(s));
返回[…pa]。筛选器((n)=>{
返回(n.contains)?n:false;
}).pop();
};
//module.exports=queryParent;
console.log(
queryParent('.bar'、'.foo')
);
//嘘!检查控制台!
但是这里也有一个我们不想要的
foo
。
我们想要的
foo
在这里。
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
bar
在这里。
唉,我想你是对的。谷歌帮不了什么忙,认为他们的方法可能不是IE中的标准方法(因为它非常兼容:-)。你可以看看document.querySelector()
,也许你可以直接匹配父节点,而无需访问父节点。唉,我认为你是对的。谷歌帮不了什么忙,认为他们的方法可能不是IE中的标准方法(因为它非常兼容:-)。你可以看看document.querySelector()
,也许您可以直接匹配父节点,而无需转到父节点。