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