[英]How to make toggle element by clicking on another one, and re-toggle it when clicking on another element?
这件事似乎很容易,但是我在jQuery上还是很新
想象一下,我想单击一个div,它使另一个标签(p)出现(切换),同时,第三个div(已显示)更改颜色(例如变为红色)。 这很容易,我想我做到了。 问题是我希望具有相同的机制:在另一个div中单击时,出现另一个,第3 div变红(也完成)但是如何使第一个s重置为第一次(第2 div)隐藏,第三个不会是红色)一个接一个(在我的示例中,两个div都显示红色)
<div class="container">
<div class="text" id="text-1" data-elem="text-1-too"> text 1 </div>
<p class="text-1-too" id="text-1-too" style="display:none;">text 1 too</p>
<div class="color" id="color-1">color</div>
</div>
<div class="container">
<div class="text" id="text-2" data-elem="text-2-too"> text 2 </div>
<p class="text-2-too" id="text-2-too" style="display:none;">text 2 too</p>
<div class="color" id="color-2">color</div>
</div>
.text{
margin-left:150px;
}
.text-too{
margin-left:150px;
}
.new-color{
color:red;
}
$('.text').click(function(){
var elemID = $(this).data('elem');
var elem = $('#' + elemID);
elem.slideToggle();
$('.color').toggleClass("new-color");
});
这是我在这里完成的非常基本的代码
尝试这个
$('.text').click(function(){
$('p').not($(this).parent().find('p')).slideUp();
$(this).parent().find('p').slideToggle();
$('.color').not($(this).parent().find('.color')).removeClass("new-color");
$(this).parent().find('.color').toggleClass("new-color");
});
$('.text').click(function(){
var elemID = $(this).data('elem');
if(elemID=='text-1-too'){
$('#text-2-too').slideToggle();
}
else{
$('#text-1-too').slideToggle();
}
$('.color').removeClass("new-color");
$(this).parent().find('.color').addClass("new-color");
});
看起来这就是您所期望的...请在此处参考演示, JSFIDDLE DEMO
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.