首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >$("#context .searched")和$(".searched",$("#context"))有什么区别?

$("#context .searched")和$(".searched",$("#context"))有什么区别?
EN

Stack Overflow用户
提问于 2010-08-27 01:08:57
回答 3查看 97关注 0票数 3

这个问题我已经想了很久了。

从理论上讲,jQuery核心函数接受一个可选值,该值可以是DOM元素- $(".searched",$("#context")[0]) -或jQuery对象- $(".searched",$("#context") )。我在读那个漂亮的article时发现了最后一个问题。

但是我真的看不出使用上下文和传递一个更复杂的css表达式之间的区别。如果它的工作方式没有区别,那么性能有什么区别吗?

谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-08-27 01:26:39

主要区别在于$(".searched", context);也可以将变量作为上下文。它实际上是在幕后做$(context).find('.searched');,我认为第二个版本更具可读性,所以我通常使用第二个版本。

这种情况的用法如下:

代码语言:javascript
运行
复制
$.fn.highlightSearch = function() {
  return this.each(function() {
    $('.searched', this).addClass('highlighted');
    // the commented line performs the same thing:
    // $(this).find('.searched').addClass('highlighted');
  });
};

$('#context').highlightSearch();
$('.somethingElse').highlightSearch();

请注意,在这种情况下,您不能简单地将新选择器附加到原始选择器的末尾。

如果你没有其他理由持有$('#context')的副本,那么使用$('#context .searched')将会更快、更简单。但是,如果您已经将$('#context')存储在一个变量中,那么最好使用.find(select)$(selector, context)表单来搜索包含的元素。

票数 2
EN

Stack Overflow用户

发布于 2010-08-27 01:13:36

它被转换为一个DOM元素(在Sizzle中是上下文部分),以便在您的任一案例中进行搜索,在幕后执行ultimately doing a .find()

如果你关心的是性能(为什么不尽可能快一点呢?),你应该使用下面的代码:

代码语言:javascript
运行
复制
$("#context .searched")

此版本的gets converted back into a jQuery object

代码语言:javascript
运行
复制
$("#context")[0]

所以它在jquery方面有点慢,因为它必须在.find()调用之前包装在一个jquery对象中,这种性能差异非常小,但这是唯一的区别,所以我注意到了:)

票数 3
EN

Stack Overflow用户

发布于 2010-08-27 01:17:23

可读性:像$("#context .searched")这样的CSS选择器比其他选择器更具可读性。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3577567

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档