繁体   English   中英

children vs selector - jQuery

[英]children vs selector - jQuery

为了简单起见,我将把问题缩小到下面。 我在click js函数中运行了一个大代码。 表示我已添加alert()

HTML

<ul>
  <li>Test li 1</li>
  <li>Test li 2</li>
  <li>Test li 3</li>
  <li>Test li 4</li>
  <li>Test li 5</li>
</ul>

JS

方法1

$('ul li').click(function(){alert('hi');});

方法2

$('ul').children().click(function(){alert('hi');});

方法1和方法2都工作正常。

哪一个更好 ? 使用选择器或使用子方法更好吗? 当我们可以使用选择器时,有一个子方法的目的是什么?

测试小提琴

我只是抓住基础知识,希望不知道某些事情不是犯罪。 谢谢

虽然这两段代码在样本HTML上都能正常工作,但它们并不完全相同。

.children返回所有子元素(无论它们是否为“li”)。

"ul li"作为选择器返回"ul li"所有“li”后代,无论它们是否是孩子。

这两个是等价的,只选择“ul”父级的“li”子元素:

$('ul > li').click(function(){alert('hi');});
$('ul').children("li").click(function(){alert('hi');});

至于哪个更好(原始问题),我怀疑没有真正的答案,并将取决于你的实际要求和HTML(当你问哪个'更好'你是什么意思?表现?可维护性?)。

通常前者会使用浏览器的CSS选择器引擎,你所使用的选择器是支持的,后者总是使用jquery构建的代码(我想)所以在大多数情况下我会选择前者。

至于

哪一个更好 ?..

更新

实际上,这取决于HTML结构......如果是这样的话,你在ul (第一级)中有少量的<li>用于子项选择器更好

你可以在js.perf ... 链接这里查看

但如果你有大量的<li> (在第一级),子选择器会变慢..

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM