0

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

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

但这对我来说是不行的:

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

谢谢!

4

6 回答 6

2

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

jQuery(document).ready(function($){
  var elem = $('.someclass');
  if(elem.length == 1){
    elem.hide();
  }  
});
于 2013-05-04T12:36:30.653 回答
2

要回答您的问题,您只能在“.someclass”对象是调用对象时引用“this”。您可以在 jQuery 中在事件和大多数回调相关的事情中看到这一点。

IE。:

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

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

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

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

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

……这就是我们所需要的。

于 2013-05-04T12:45:54.563 回答
2

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

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

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

于 2013-05-04T12:49:46.913 回答
0

好吧,您不需要将其this用于此目的-另一方面,请考虑以下示例:

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

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

});

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

于 2013-05-04T12:36:59.810 回答
0

你可以这样做:

$('.someclass').each(function() {
  $(this).hide();
});
于 2013-05-04T12:37:12.747 回答
0

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

$('.someclass').each(function () {
    $(this).hide();
});
于 2013-05-04T12:41:07.030 回答