选择器:ID 与上下文

     2023-03-05     89

关键词:

【中文标题】选择器:ID 与上下文【英文标题】:Selectors: Id vs. context 【发布时间】:2011-03-25 12:02:46 【问题描述】:

我使用 jQuery。

我已经阅读了很多关于选择器性能和优化我们的 AJAX 应用程序的内容。我希望提高我的选择器性能。我知道所有的 jquery 性能提示。我还没有找到一个问题的确切答案。我正在使用几乎所有当前的 jquery 性能提示,但我的应用程序似乎仍然落后很多。

所以,为了优化,我从选择器开始。

我的问题是:从上下文下降以定位 id 是否比仅定位 id 更快?我看不出有什么区别。

例子:

$('#childId', $higherElm);

比刚才更快

$('#childId');

??????

提前致谢。

【问题讨论】:

您是否尝试过分析您的应用程序?除非您看到实际的瓶颈在哪里,否则您可能会优化几乎没有任何好处。 是的,大多数罪魁祸首是 jquery 方法,例如可拖动和调整大小、CSS、CLASS 以及其他一些不直接调用的 jquery 方法。这篇文章主要是为了找出使用哪种 id 选择器方法(我知道它不会有太大的不同)。 酷...这没什么错。另外,并不是说您不知道这一点,请尝试从全局中考虑性能结果。一个特定的单个 API 可能很慢,但要真正解决性能问题,也许您需要考虑为什么调用该 API,并找到避免经常调用它的机会。表演作品更像是一种艺术形式而不是科学,表演工具就是这样,工具,比如油漆的颜色:) 【参考方案1】:

选择一个 ID 绝对是您能做的最快的选择。

添加任何其他内容只会减慢速度。

【讨论】:

【参考方案2】:

正如在jQuery source 中看到的那样,$('#id') 只是document.getElementById,而$('#id', context)$(context).find('#id')。所以第一个更快。

【讨论】:

是的。此外,由于$('#id', context) 总是最终调用$(context).find('#id')(或者如果context 已经是一个jQuery 对象,甚至可能是context.find('#id') - 不确定/不记得,但它不会改变以下内容......)您可以使用$.find() 版本来获得更快的速度。【参考方案3】:

不确定您上面描述的语法是否有益,但在 http://www.artzstudio.com/2009/04/jquery-performance-rules/ 上,它确实在规则 #5 中声明使用子查询更快(这是有道理的)......他们使用 $higherElm 进行了演示。不过 find() 语法。

在您的示例中 - 因为它直接映射到作为本机函数调用的 getElementById - 我认为您不会看到太多改进。但是,以元素集为目标的选择器(因此是循环的)可能会看到一些或主要的好处。

【讨论】:

它们在寻找不太具体的元素时速度更快。当通过 id 查找元素时,getElementById 速度非常快,而上下文只是阻碍了。【参考方案4】:

当您通过“id”进行选择时,上下文并不重要,因为无论如何引擎都会调用getElementById()。上下文在语义上当然很重要,但检查应该很快。 (我想从这个角度来看,拥有上下文应该稍微,但如果它对你的页面有实际意义,你就不能停止这样做。)

【讨论】:

【参考方案5】:

根据this article,使用更少、更直接的选择器会更快。 #id#id #child 好,至少在 css 中...

【讨论】:

jquery的五种选择器

1.$("#id"):id选择器,document.getElementById("id");2.$("div"):元素选择器document.getElementByTagName("div");3.$(".myClass"):类选择器,返回所有class="myClass"的元素4.$("*"):返回所有元素,多用于结合上下文搜索5.$("div,span,p.myClass"):多条件选择器 查看详情

css选择器

...择器、属性选择器等等 派生选择器派生选择器也称为上下文选择器,通过依据元素在其位置的上下文关系来定义样式。如下例子,如果我们定义了一个h2选择器,那么整个HTML中所有的h2元素都会设置成红色字体;如果我们 查看详情

android选择器隐藏上下值

】android选择器隐藏上下值【英文标题】:androidpickerhideupperandlowervalue【发布时间】:2017-03-2416:13:45【问题描述】:numberPicker1=(NumberPicker)findViewById(R.id.numberPicker1);finalStringgenders[]="red","blue","green";numberPicker1.setMinValue(0 查看详情

css

css选择器选择器有分很多种:标签选择器是比较常用范围用的多的如div,span。类选择器通过类名可选择多个元素。灵活的对应class属性。p.one选中p元素并且p元素下的class属性的值等于oneclass属性下的p元素等于one的p元素的值。。。... 查看详情

jquery的12种选择器

...色):这是第一个p标签2、*:匹配所有元素,多用于结合上下文来搜索显示:这是p标签这是div标签3、多选择器selector1,selector2,selectorN:指定任意多个选择器,并将匹配到的元素合并到一个结果内显示:这是第二个p标签这是第一个di... 查看详情

css:选择器

上下文选择器  divp{ }//表示所有div下的p元素类名选择器ID选择器直接子元素选择器  div >p 相邻同袍元素  div p+p普通同袍元素  divp~p伪类:选择第一个元素和最后一个元素  :first-child  :last-chi... 查看详情

css选择器与优先级详解(一)

参考技术ACSS选择器又被称为CSS样式、CSS属性选择器。是由css命名及后面属性及属性值构成一个整体。1.基础选择器a.id选择器:通过设置元素的id属性为该元素制定ID。ID由开发者指定。每个ID在文档中必须是唯一的。在写样式表时... 查看详情

使用带有上下文参数的选择器会更快吗?

】使用带有上下文参数的选择器会更快吗?【英文标题】:Isitfastertouseselectorswiththecontextparameter?【发布时间】:2015-10-2601:48:25【问题描述】:将选择器与上下文参数一起使用而不是指定它会更快吗?例子:varsource=$(\'option:selected\... 查看详情

jquery-常用选择器(与css选择器用法一样)

基本选择器id选择器  $("#idValue")   选中页面中id属性值为idValue的元素(一个)class选择器  $(".classValue")  选中页面中class属性值为classValue的所有元素element选择器  $("elementName")  选中页面中元素名为elementName的所... 查看详情

ID 属性的属性选择器是不是不如 ID 选择器具体?

】ID属性的属性选择器是不是不如ID选择器具体?【英文标题】:IsanattributeselectorfortheIDattributelessspecificthananIDselector?ID属性的属性选择器是否不如ID选择器具体?【发布时间】:2015-12-2808:29:11【问题描述】:我需要做什么才能使[id... 查看详情

元素选择器如何比 id 选择器更具体?

】元素选择器如何比id选择器更具体?【英文标题】:Howelementselectorismorespecificthanidselector?【发布时间】:2012-03-0720:15:49【问题描述】:据我了解,元素最不具体。(元素与ID)。请帮助我理解选择器的一般特性。<divid="container"... 查看详情

jQuery id 选择器正在选择所有元素

】jQueryid选择器正在选择所有元素【英文标题】:jQueryidselectorisselectingallelements【发布时间】:2020-02-0518:14:41【问题描述】:我正在尝试选择具有特定id(todoItems)的ul,但页面上的所有ul都受到此代码的影响。特别是ul在我的导航栏... 查看详情

jquery选择器之id选择器

...的节点也是前端开发中的一个重点。jQuery提供了一系列的选择器帮助开发者达到这一目的,让开发者可以更少的处理复杂选择过程与性能优化,更多专注业务逻辑的编写。jQuery几乎支持主流的css1~css3选择器的写法,我们从最简单... 查看详情

h5id选择器

09-id选择器#identity1{color:red}#identity2{color:green}#identity3{color:blue}#identity4{color:yellow}迟到毁一生早退穷三代按时上下班必成高富帅<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8">&l 查看详情

css3与页面布局-概要,选择器,特殊性,刻度单位

Q1:选择器1.id选择器(#):以#开始,引用时使用id,如id="div1"2.类选择器(.):以.开始,使用class属性引用,可以有多个,如class="cls1cls2cls3"3.标签选择器:以标签名称开始,如p,span,div,*4.伪类选择器:a:hover,a:link,a:visted,a:active。Q2:在CS... 查看详情

css选择器

普通选择器/*标签选择器*/div{color:#fff;}/*类选择器*/.class{color:#fff;}/*id选择器*/#id{color:#fff;}/*通配符选择器*/*{color:#fff;} 复合选择器/*后代选择器*/选择器选择器{color:#fff;}/*子代选择器*/选择器>选择器{color:#fff;}/*并集选择... 查看详情

jquery选择器

jQuery选择器之id选择器页面的任何操作都需要节点的支撑,开发者如何快速高效的找到指定的节点也是前端开发中的一个重点。jQuery提供了一系列的选择器帮助开发者达到这一目的,让开发者可以更少的处理复杂选择过程与性能... 查看详情

动态生成 ID 的选择器

】动态生成ID的选择器【英文标题】:SelectorfordynamicallygeneratedID【发布时间】:2011-06-1509:02:06【问题描述】:我有一系列div,其中id用常规标记:<divid="result<%=order.ID%>">提交表单的处理程序可以通过以下方式找出order.ID是... 查看详情