如何使用“this”隐藏元素?

时间:2013-05-04 12:32:21

标签: javascript jquery

原谅我的愚蠢,但有人可以向我解释如何使用this关键字隐藏元素? 例如,这是有效的:

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

但这对我来说是不行的:

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

谢谢!

6 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:2)

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

即:

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

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

但是,通过执行此操作,您将对对象和任何匹配的对象进行两次包装。

执行代码所代表的操作的最佳方法是完全删除if语句,因为此处不需要查询jQuery对象的长度。 jQuery不对空的结果集执行函数,所以简单......

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

......只需要一切。

答案 2 :(得分:2)

如果您试图避免重复,那么它应该像以下一样简单:

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

您根本不需要检查length。如果没有元素,jQuery足够聪明,不会做任何事情。

答案 3 :(得分:0)

嗯,您不需要为此目的使用this - 另一方面请考虑以下示例:

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

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

});

在这种情况下,this引用每个循环中的当前DOM元素。

答案 4 :(得分:0)

你可以这样做:

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

答案 5 :(得分:0)

变量this必须位于事件处理程序,each方法或类似的东西中。例如:

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