Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/467.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.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 $(“context.searched”和$(“searched”和$(“context”)之间有什么区别?_Javascript_Jquery - Fatal编程技术网

Javascript $(“context.searched”和$(“searched”和$(“context”)之间有什么区别?

Javascript $(“context.searched”和$(“searched”和$(“context”)之间有什么区别?,javascript,jquery,Javascript,Jquery,这个问题我想了很久 理论上,jQuery核心函数接受一个可选值,该值可以是DOM元素-$(“.searched”、$(“#context”)[0]),也可以是jQuery对象-$(“.searched”、$(“#context”)。 我发现最后一个问题读起来很好 但是我真的看不出使用上下文和传递更复杂的css表达式之间的区别。如果在工作方式上没有差异,那么在性能上是否存在差异 感谢它被转换为一个DOM元素(在Sizzle中,上下文部分)来搜索您的案例中的任何一个,一个隐藏的案例 如果您关心性能(

这个问题我想了很久

理论上,jQuery核心函数接受一个可选值,该值可以是DOM元素-
$(“.searched”、$(“#context”)[0])
,也可以是jQuery对象-
$(“.searched”、$(“#context”)
。 我发现最后一个问题读起来很好

但是我真的看不出使用上下文和传递更复杂的css表达式之间的区别。如果在工作方式上没有差异,那么在性能上是否存在差异


感谢

它被转换为一个DOM元素(在Sizzle中,上下文部分)来搜索您的案例中的任何一个,一个隐藏的案例

如果您关心性能(为什么不尽可能快?),您应该使用以下方法:

$("#context .searched")
此版本:


因此,jquery方面的速度稍慢,因为在调用
.find()
之前必须将其包装在jquery对象中,性能差异非常小,但这是唯一的区别,所以我要指出:)

可读性:类似
$(“#context.search”)的CSS选择器
的可读性远远高于其他版本。

主要区别在于
$(“.search”,context)也可以将变量作为上下文。它正在有效地执行
$(上下文).find('.searched')在引擎盖下,我认为第二个版本更可读,所以我通常使用它

这种情况的用途如下:

$.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')
会更快、更简单。但是,如果变量中已经存储了
$(“#上下文”)
,最好使用
.find(select)
$(选择器,上下文)
表单来搜索包含的元素。

这完全解决了我的问题。只有当我必须为了其他目的存储上下文时,我才会使用它。我发现$('#context').find('.searched')也更自然,所以我可能不再使用context语法。
$.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();