Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/445.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我可以用另一种方法来代替从jquery中的选择器中查找元素吗?_Javascript_Jquery_Html_Css - Fatal编程技术网

Javascript 我可以用另一种方法来代替从jquery中的选择器中查找元素吗?

Javascript 我可以用另一种方法来代替从jquery中的选择器中查找元素吗?,javascript,jquery,html,css,Javascript,Jquery,Html,Css,通常我们在jquery之类的库中通过选择器来搜索元素,但如果我们想用另一种方法来搜索,会发生什么:给定一个元素,我们希望找到应用于它的所有规则,就像firebug那样 这种工作是必要的,如果我们想带来一个css文件,并更新它,以便我们可以看到我们的网页上的实时结果。 在firebug中,通过选择一个元素,我们可以以相反的顺序看到应用于它的所有规则 首先,我们必须找到文档的样式规则,并将其内容作为文本检索,以便用户可以更新它们,但真正的问题是找到元素与所有规则之间的关系 即使在jquery这样的库

通常我们在jquery之类的库中通过选择器来搜索元素,但如果我们想用另一种方法来搜索,会发生什么:给定一个元素,我们希望找到应用于它的所有规则,就像firebug那样

这种工作是必要的,如果我们想带来一个css文件,并更新它,以便我们可以看到我们的网页上的实时结果。 在firebug中,通过选择一个元素,我们可以以相反的顺序看到应用于它的所有规则

首先,我们必须找到文档的样式规则,并将其内容作为文本检索,以便用户可以更新它们,但真正的问题是找到元素与所有规则之间的关系


即使在jquery这样的库的帮助下,这可能吗?

我想了解一下,在浏览器环境应用的限制条件下,人们可以使用什么工具来解决这样的问题

我的意见是,我们必须对css文件/选择器进行残酷的搜索攻击,并构建依赖关系:假设我们有100条规则用于包含100个元素的页面,可能的组合是10^4,因为关系是多对多的

然后,我们可以在内存中构建“表”(散列数组),如果我们想保持元素规则的级联顺序,这些表可能会超过10^4条记录

无论如何,我的观点是,我不敢让jquery如此痛苦!如果我们能“移植”jquery的核心,我的意思是搜索引擎

它的心似乎在听‘sizzle’的名字,但这是在浪费时间(正则表达式?不,谢谢)。我认为真正的“心”是一个简单的词:“
querySelectorAll
”,现在我们以本地速度运行


这只是一个意见,因为我不关心广泛/旧的浏览器支持。

任何事情都是可能的,但是你能解释一下为什么你需要更好一点,比如用“实时结果”更新页面吗听起来不像是你需要知道一个元素的所有样式和属性的东西?页面上每个元素的可能选择器数量都会很大,例如单个元素可以通过ID、任意数量的类和索引、与索引的父/子关系、属性值、,属性值和pesudo–类,仅举几个例子。如何确定使用哪个选择器?获取firefox源代码并找到函数,看看它是如何工作的Firebug可以进入浏览器渲染引擎…使用窗口内的脚本不具有相同的访问权限。如果能更详细地解释你的目标,我会做得更好。我明白,人们无法想象我脑子里有什么;给出一个解释:假设一个页面由一个菜单、一个滑块和一个上下文组成(使用我的php库)。假设我把它们称为模块,每个人都来自于类型为:*.css、*.js、*.html的distict文件片段(文档片段),这些片段一个接一个地包含在头部/底部(为了简单起见)。现在,在客户端浏览器上,我们所要做的就是构建一个节点树,并开始查找/更改选择器和规则,以便将它们保存回服务器。这就是全部的想法!