Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.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/1/visual-studio-2008/2.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
Jquery 对变量使用$(this)与缓存选择器相比,有什么性能优势吗?_Jquery_Jquery Selectors - Fatal编程技术网

Jquery 对变量使用$(this)与缓存选择器相比,有什么性能优势吗?

Jquery 对变量使用$(this)与缓存选择器相比,有什么性能优势吗?,jquery,jquery-selectors,Jquery,Jquery Selectors,$(这)与缓存选择器相同吗?$(this)是否每次都搜索DOM 例如: $('#selector').on('click', function() { $(this).method(); $(this).method1(); $(this).method2(); //OR var selector = $('#selector'); selector.method(); selector.method1(); selector

$(这)与缓存选择器相同吗?$(this)是否每次都搜索DOM

例如:

$('#selector').on('click', function() {
    $(this).method();
    $(this).method1();
    $(this).method2();

    //OR

    var selector = $('#selector');

    selector.method();
    selector.method1();
    selector.method2();

}
定义
$(this)
不需要DOM搜索,但它会在内存中创建一个新对象。在您的示例中,性能上的差异可能可以忽略不计,但使用一个对象而不是创建三个相同的对象仍然是一种好的做法。我经常看到
var$this=$(this)
——添加一行可以节省内存和键入,任何阅读代码的人都清楚地知道
$this
是什么。

定义
$(this)
不需要DOM搜索,但它确实在内存中创建了一个新对象。在您的示例中,性能上的差异可能可以忽略不计,但使用一个对象而不是创建三个相同的对象仍然是一种好的做法。我经常看到
var$this=$(this)
——添加一行可以节省内存和打字,任何阅读代码的人都很清楚在这种情况下,
$this
是什么

$('#selector').on('click', function() {
  $(this).method();
  $(this).method1();
  $(this).method2();
});
“this”是一个局部变量,它引用DOM元素。因此,为了回答您的问题,这并不是每次都进行“dom”查询。但是,您多次调用$(this),它将'this'DOM元素传递给jquery构造函数,并为您提供一个jquery对象。实现这一点的最佳方法如下:

$('#selector').on('click', function() {
  var $this = $(this);
  $this.method();
  $this.method1();
  $this.method2();
});
第二种方法

$('#selector').on('click', function() {
  var selector = $("#selector");
  selector.method();
  selector.method1();
  selector.method2();
});
由于$(“#选择器”)最终将执行DOM查询,因此成本会稍微高一些

在这种情况下

$('#selector').on('click', function() {
  $(this).method();
  $(this).method1();
  $(this).method2();
});
“this”是一个局部变量,它引用DOM元素。因此,为了回答您的问题,这并不是每次都进行“dom”查询。但是,您多次调用$(this),它将'this'DOM元素传递给jquery构造函数,并为您提供一个jquery对象。实现这一点的最佳方法如下:

$('#selector').on('click', function() {
  var $this = $(this);
  $this.method();
  $this.method1();
  $this.method2();
});
第二种方法

$('#selector').on('click', function() {
  var selector = $("#selector");
  selector.method();
  selector.method1();
  selector.method2();
});

由于$(“#选择器”)最终将执行DOM查询,因此成本会稍微高一些

在第一个示例中,您创建了3个jquery对象,在第二个示例中,我认为您真正的意思是这
var$this=$(this)$这个方法()$方法1()$方法2()//这是另一个jQuery obj var$selector=$(“#selector”)//您已经在$This上有了选择器。在第一个示例中,您创建了3个jQuery对象,在第二个示例中,仅此一个。我想您真正的意思是这个
var$This=$(This)$这个方法()$方法1()$方法2()//这是另一个jQuery obj var$selector=$(“#selector”)//您已经知道$This上的选择器
正在使用$for$This来指定变量是jQuery对象吗?是的,这是正确的。只是为了区别于常规javascript变量。使用$for$this只是为了指定变量是jQuery对象吗?是的,这是正确的。只是为了区别于常规javascript变量。是否使用$for
var$this
只是为了指定变量是jQuery对象?是的。使用
$
为包含jquery对象的变量启动名称是一种常见做法(但决不是必需的)。是否使用$for
var$this
只是为了指定变量是jquery对象?是的。使用
$
为包含jquery对象的变量启动名称是一种常见做法(但决不是必需的)。