[英]How to toggle every jQuery element except the clicked?
因此,我试图在jQuery中实现看似非常基本的东西。 我有许多“标题”,当我单击标题时,我希望该标题下的信息向下滑动,而所有其他标题信息向上滑动(以便一次只显示一个标题)。
这是我想要发生的事情的sudo代码:
$('.more-info-header:not(.jquery-processed)').addClass('jquery-processed').click(function(e) {
$(this).children('.game-info-text').slideToggle("Slow");
[all other ('.game-info-text')].slideUp(fast)
});
不过,对于我的一生来说,我不知道该如何编码第二行([所有其他('.game-info-text')])。 任何帮助深表感谢!
(我将其实现为drupal行为,这就是为什么要添加“ jquery处理”类的原因)
就像是:
$('.more-info-header:not(.jquery-processed)').addClass('jquery-processed').click(function(e) {
$(this).children('.game-info-text').slideToggle("Slow");
$('.more-info-header').not(this).children('.game-info-text').slideUp(fast);
// ^-- removes the clicked element from all `.more-info-header`
});
参考: .not()
听起来您喜欢jQuery UI Accordion插件。
$('.more-info-header:not(.jquery-processed)')
.addClass('jquery-processed').click( function(e) {
var these = $(this).children('.game-info-text').slideToggle("slow");
$('.game-info-text').not(these).slideUp("fast");
});
使用not()
函数,您可以排除已经选择的元素。
像这样?
$('.more-info-header').click(function(e){
var target = e.target || e.srcElement;
$(this).children().not(target).find('.game-info-text').slideUp('fast');
$('.game-info-text', target).slideToggle("slow");
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.