Show/Hide DIV 秒基于 DIV 点击
Show/Hide DIVs based on DIV click
我有以下代码:
<script type="text/javascript">
jQuery.noConflict();
jQuery( document ).ready(function ($) {
$('#telefon').click(function () {
$('#telefon-text').show('fast');
$('#sos-text').hide('fast');
$('#positionsbestimmung-text').hide('fast');
});
$('#sos').click(function () {
$('#telefon-text').hide('fast');
$('#sos-text').show('fast');
$('#positionsbestimmung-text').hide('fast');
});
$('#positionsbestimmung').click(function () {
$('#telefon-text').hide('fast');
$('#sos-text').hide('fast');
$('#positionsbestimmung-text').show('fast');
});
});
</script>
并且它工作正常,我遇到的问题是,例如,一旦我首先单击 DIV 并尝试再次单击它以关闭它,它就不会关闭。它仅在我单击下一个时关闭。我需要在此处更改什么以使其在我第二次单击时也关闭?
使用 jQuery .toggle()
:
示例:
$('#sos').click(function () {
$('#telefon-text').hide('fast');
$('#sos-text').toggle('fast');
$('#positionsbestimmung-text').hide('fast');
});
Toggle 基本上会为您处理一些逻辑。也就是说,如果元素被隐藏,它会显示它,如果它被显示,它会隐藏它。
工作示例:
$(function() {
$('#btnFoo').click(function() {
$('#foo').toggle("fast");
$('#bar').hide("fast");
});
$('#btnBar').click(function() {
$('#bar').toggle("fast");
$('#foo').hide("fast");
});
});
.example {
height: 100px;
width: 100px;
background-color: teal;
border: dashed 2px pink;
margin-bottom: 15px;
display: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="example" id="foo">Foo</div>
<div class="example" id="bar">Bar</div>
<button id="btnFoo">Show/Hide Foo</button>
<button id="btnBar">Show/Hide Bar</button>
正如上一个答案所建议的那样,您可以使用 .toggle()
来完成,但您只需要将相对 div 切换到单击的按钮,因此:
$('#telefon').click(function () {
$('#telefon-text').toggle('fast');
});
$('#sos').click(function () {
$('#sos-text').toggle('fast');
});
$('#positionsbestimmung').click(function () {
$('#positionsbestimmung-text').toggle('fast');
});
您可以在此处查看工作演示:http://jsfiddle.net/yxf4g93w/
首先,应用一个 class 对你的所有 s 都是通用的。
<div class="div-class-here"></div>
<div class="div-class-here"></div>
<div class="div-class-here"></div>
然后,
var $divs = $( '.div-class-here' );
$divs.on( 'click', function () {
$divs.removeClass( 'fast' );
$( this ).addClass( 'fast' );
});
我有以下代码:
<script type="text/javascript">
jQuery.noConflict();
jQuery( document ).ready(function ($) {
$('#telefon').click(function () {
$('#telefon-text').show('fast');
$('#sos-text').hide('fast');
$('#positionsbestimmung-text').hide('fast');
});
$('#sos').click(function () {
$('#telefon-text').hide('fast');
$('#sos-text').show('fast');
$('#positionsbestimmung-text').hide('fast');
});
$('#positionsbestimmung').click(function () {
$('#telefon-text').hide('fast');
$('#sos-text').hide('fast');
$('#positionsbestimmung-text').show('fast');
});
});
</script>
并且它工作正常,我遇到的问题是,例如,一旦我首先单击 DIV 并尝试再次单击它以关闭它,它就不会关闭。它仅在我单击下一个时关闭。我需要在此处更改什么以使其在我第二次单击时也关闭?
使用 jQuery .toggle()
:
示例:
$('#sos').click(function () {
$('#telefon-text').hide('fast');
$('#sos-text').toggle('fast');
$('#positionsbestimmung-text').hide('fast');
});
Toggle 基本上会为您处理一些逻辑。也就是说,如果元素被隐藏,它会显示它,如果它被显示,它会隐藏它。
工作示例:
$(function() {
$('#btnFoo').click(function() {
$('#foo').toggle("fast");
$('#bar').hide("fast");
});
$('#btnBar').click(function() {
$('#bar').toggle("fast");
$('#foo').hide("fast");
});
});
.example {
height: 100px;
width: 100px;
background-color: teal;
border: dashed 2px pink;
margin-bottom: 15px;
display: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="example" id="foo">Foo</div>
<div class="example" id="bar">Bar</div>
<button id="btnFoo">Show/Hide Foo</button>
<button id="btnBar">Show/Hide Bar</button>
正如上一个答案所建议的那样,您可以使用 .toggle()
来完成,但您只需要将相对 div 切换到单击的按钮,因此:
$('#telefon').click(function () {
$('#telefon-text').toggle('fast');
});
$('#sos').click(function () {
$('#sos-text').toggle('fast');
});
$('#positionsbestimmung').click(function () {
$('#positionsbestimmung-text').toggle('fast');
});
您可以在此处查看工作演示:http://jsfiddle.net/yxf4g93w/
首先,应用一个 class 对你的所有 s 都是通用的。
<div class="div-class-here"></div>
<div class="div-class-here"></div>
<div class="div-class-here"></div>
然后,
var $divs = $( '.div-class-here' );
$divs.on( 'click', function () {
$divs.removeClass( 'fast' );
$( this ).addClass( 'fast' );
});