Jquery 对变量使用$(this)与缓存选择器相比,有什么性能优势吗?
$(这)与缓存选择器相同吗?$(this)是否每次都搜索DOM 例如: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
$('#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变量。是否使用$forvar$this
只是为了指定变量是jQuery对象?是的。使用$
为包含jquery对象的变量启动名称是一种常见做法(但决不是必需的)。是否使用$forvar$this
只是为了指定变量是jquery对象?是的。使用$
为包含jquery对象的变量启动名称是一种常见做法(但决不是必需的)。