使用jQuery隐藏具有特定类名但不符合某个条件的元素

3

我有一个页面,其中有多个具有相同类名的元素。

其中一些元素被重新定位,当我提交页面时,我希望隐藏那些在顶部位置为0的元素。

我已经尝试了一些建议,例如:

$('.myClass').not($('.myClass').css('top', '0')).fadeOut(300);

但显然这不起作用:-)

还有别的想法吗?

谢谢


1
$('.myClass').css('top', '0') 设置元素的顶部,而不是查找具有该值的元素。 - epascarello
1
.not(($('.myClass').css('top') == 0)) - mtizziani
@mtizziani 那只会返回第一个... 所以也是错误的。 - epascarello
谢谢mtizziani,但实际上它会淡化掉所有具有相同类的元素,这是没有意义的,可能是我做错了什么... - Cainnech
啊,我明白了。我认为你不能直接使用CSS参数来完成这个操作,而必须对元素进行循环处理。not函数只接受jQuery节点作为参数,而不是true或false。 - mtizziani
3个回答

5
你正在设置元素的顶部位置,而不是过滤集合。
你需要使用filter()
$( '.myClass' )
  .filter(function() {
    return $(this).css('top') === "0px";
  }).fadeOut(300);

0

这个没有选择器,但可以通过循环元素并检查顶部 位置 来实现。

就像这样。

$.each($('.myClass'), function(i, el) {
  var position = $(el).position();

  if (position.top === 0) {
      $(el).hide();
  }
});

这是一个示例


@espacarello 是的,我正在使用fiddle并看到了它。谢谢!不管怎样,你的答案更好。+1给你! :) - VVV

0
循环遍历每个带有类的元素,然后检查其CSS属性:
$('.myClass').each(function(){
  if($(this).css('top')==='0'){
     $(this).fadeOut(300);
  }
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接