Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery ";“唯一可见的子对象”;元素?_Jquery_Css_Jquery Selectors_Css Selectors - Fatal编程技术网

Jquery ";“唯一可见的子对象”;元素?

Jquery ";“唯一可见的子对象”;元素?,jquery,css,jquery-selectors,css-selectors,Jquery,Css,Jquery Selectors,Css Selectors,我有一个大的外部div,里面有许多相同的圆(这是一个较小的div,边界半径为100%) 我使用jquery在用户单击这些圆圈时淡出它们,但是我想在单击唯一剩余的圆圈时添加其他事件 :最后一个孩子或:n-child()不会有帮助,因为我不介意单击哪个圆圈,直到只剩下其中一个为止 同样,元素已淡出,因此它们仍然是可见元素的同级。所以我需要的是选择“最后可见”元素 为什么不呢 .circle:first-child:last-child { ? 编辑已编辑的问题: 如果要在单击该元素是否唯一可见时

我有一个大的外部div,里面有许多相同的圆(这是一个较小的div,边界半径为100%)

我使用jquery在用户单击这些圆圈时淡出它们,但是我想在单击唯一剩余的圆圈时添加其他事件

:最后一个孩子或:n-child()不会有帮助,因为我不介意单击哪个圆圈,直到只剩下其中一个为止


同样,元素已淡出,因此它们仍然是可见元素的同级。所以我需要的是选择“最后可见”元素

为什么不呢

.circle:first-child:last-child {
?

编辑已编辑的问题:

如果要在单击该元素是否唯一可见时进行测试,可以执行以下操作:

$(document).ready(function(){
    $(".circle").click(function(){
        $(this).fadeOut("slow");
        if ($('.circle:visible').length>1) return; // returns if not the last one
        alert("I was the last of Mohicans");
    });
});

jQuery实际上有一个
独子
选择器,请参见此处:

(希望我理解了你的要求)

根据对问题的编辑,请参见以下内容:

也许你应该试试这样:

$(document).ready(function(){
    $(".circle").click(function(){
        var numCircles = $('.circle').length;
        var numFaded = $('.faded').length;
        if( (numCircles - numFaded) == 1 ) {
            alert("I was the last of Mohicans!");
        }
        $(this).fadeOut("slow");
        $(this).addClass("faded");
    });
});
我意识到上面的方法可能不是最优的(我不是JavaScript/jQuery高手),但它应该相当快(只要你不添加太多的循环),并且应该根据你的需要发挥作用


请记住,我还没有测试过以上内容,希望如果它不起作用,它至少会让你朝着正确的方向前进,但如果你需要更多帮助,请在下面发表评论。

一个解决办法是为那些div和独生子女增加一门课。单击$(“.extraclass:only child”)后,添加新事件。否则,请删除您的外部类并应用淡出效果

$(document).ready(function () {
  $(".circle").click(function () {
   var $this = $(this);
   $this.fadeOut("slow");
   if ($this.siblings(':visible').length === 0) {
     alert("I was the last of Mohicans");
   }
 });
});
进行可见兄弟姐妹计数将是最佳选择。。。
如果需要,还可以添加类选择器。

显示您的代码。。。或者JSFIDLE可能是,为什么不向我们展示一些示例源代码?帮助你会更容易一些。也许我的问题不对。这两个答案都提供了一种选择独子元素的有效方法,但由于我使用了淡出,元素仍然保留在HTML文件中,因此它们中没有一个会成为独子元素。对不起,我以前不知道这个。我会修改这个问题以避免进一步的混淆。好的,我明白了,我会修改我的答案修改我的答案,希望这就是你想要的!当然,这对于选择独生子女很有效,但我的问题不正确,因此我对其进行了编辑。为什么有
$(“.circle”)。单击(函数()
两次?我不知道jQuery可以做到这一点?我之所以能做到,是因为这是OP的问题。但是,是的,这是可能的,jQuery保证执行顺序是插入顺序。效果很好!谢谢
$(document).ready(function(){
    $(".circle").click(function(){
        var numCircles = $('.circle').length;
        var numFaded = $('.faded').length;
        if( (numCircles - numFaded) == 1 ) {
            alert("I was the last of Mohicans!");
        }
        $(this).fadeOut("slow");
        $(this).addClass("faded");
    });
});
$(document).ready(function () {
  $(".circle").click(function () {
   var $this = $(this);
   $this.fadeOut("slow");
   if ($this.siblings(':visible').length === 0) {
     alert("I was the last of Mohicans");
   }
 });
});