2013-05-04 120 views
0

请原谅我的愚蠢,但有人请向我解释我怎样才能隐藏元素使用this关键字? 例如对于这工作:如何使用“this”隐藏元素?

jQuery(document).ready(function($){ 
    if($('.someclass').length==1){ 
     $('.someclass').hide(); 
    } 
}); 

不过这对我来说是一个不走:

jQuery(document).ready(function($){ 
    if($('.someclass').length==1){ 
     $(this).hide(); 
    } 
}); 

谢谢!

+0

这是一个关键字,指的是你在的对象。如果您在元素主体/事件中进行编码,则只能使用“this”来引用元素。 – 2013-05-04 12:35:39

+0

你一定认为“这个”很酷。不要仅仅为了使用它而使用某些东西。 – Antony 2013-05-04 12:40:51

+0

其实我认为“这个”很酷,因为它允许我不重复一遍又一遍的课程:=) – 2013-05-04 12:45:53

回答

2

您是否需要使用this(在这种情况下,请参阅其他答案)或者您只是试图避免选择器重复?那这个呢?

jQuery(document).ready(function($){ 
    var elem = $('.someclass'); 
    if(elem.length == 1){ 
    elem.hide(); 
    } 
}); 
0

那么你不需要使用this用于此目的的 - 考虑,另一方面下面的例子:

$('.someClass').each(function(){ 

    // maybe some logic here 
    $(this).hide(); 

}); 

在这种情况下,this指的是当前的DOM元素在每个循环。

0

你可以这样做:

$('.someclass').each(function() { 
    $(this).hide(); 
}); 
0

可变this必须在事件处理程序,each方法或类似这样的东西。例如:

$('.someclass').each(function() { 
    $(this).hide(); 
}); 
2

要回答你的问题,只能在'.someclass'对象是调用对象时引用'this'。你可以在jQuery中看到这个内部事件和大多数回调相关的事情。

即:

$('.someclass').each(function() { 
    $(this).hide(); 
}); 

$('.someclass').click(function() { 
    $(this).hide(); 
}); 

但是通过这样做,你被包装的对象,任何匹配对象,两次。

执行代码所代表的最好方法是将if语句完全移除,因为查询jQuery对象的长度在这里实际上并不是必需的。 jQuery不会执行结果集上的函数,因为结果集是空的,所以很简单...

jQuery(document).ready(function($){ 
    $('.someclass').hide(); 
}); 

...就是所需要的。

+0

很好的解释THX但是我的元素将包含儿童,这就是为什么我使用if语句“upvoted你的答案” :=) – 2013-05-04 12:49:53

2

如果你想避免重复,那么它应该是简单的:

$(function() { 
    $('.someclass').hide(); 
}); 

你并不需要检查length可言。如果没有元素,jQuery足够聪明,不会做任何事情。