3 回答

TA貢獻1909條經(jīng)驗 獲得超7個贊
幾個問題。
請研究下面的代碼
太多 $(document.ready... 并且不需要存儲這樣的語句的結(jié)果
使用數(shù)據(jù)屬性和公共類,可以大大縮短代碼。DRY 不要重復(fù)自己
我也簡化了內(nèi)容容器 CSS
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="container">
<div class="wrapper">
<div class="toggle-1">1</div>
<div class="toggle-1-content">
<p>Some content 1</p>
</div>
<div class="toggle-2">2</div>
<div class="toggle-2-content">
<p>Some content 2</p>
</div>
</div>
</div>

TA貢獻1834條經(jīng)驗 獲得超8個贊
工作代碼:
$(document).ready(function() {
$('.toggle-1').click(function() {
if ($('.toggle-2').hasClass('active')) {
// remove toggle-2 active classes
$('.toggle-2').removeClass('active');
$('.toggle-2-content').removeClass('active');
}
$('.toggle-1').toggleClass('active');
$('.toggle-1-content').toggleClass('active');
});
$('.toggle-2').click(function() {
if ($('.toggle-1').hasClass('active')) {
// remove toggle-1 active classes
$('.toggle-1').removeClass('active');
$('.toggle-1-content').removeClass('active');
}
$('.toggle-2').toggleClass('active');
$('.toggle-2-content').toggleClass('active');
});
});
這是我的工作版本的鏈接。
需要注意以下幾點:
您不需要
$(document).ready()
多次調(diào)用。沒有理由在單個頁面上多次調(diào)用它,因為該事件僅被觸發(fā)一次。你需要以某種方式跟蹤狀態(tài);因此
if ($('el').hasClass('classname'))
語法。一旦處理得當,很容易確保在單擊另一個元素時每個元素都“重置”到其原始狀態(tài)。
希望有幫助!

TA貢獻1111條經(jīng)驗 獲得超0個贊
toggleClass接受強制切換類型的第二個布爾參數(shù),打開或關(guān)閉。不僅如此,您還可以使用單個 jQuery 調(diào)用來定位多個元素,因此請充分利用它,因為應(yīng)用的類具有相同的名稱。
所以你可以簡化你的代碼
$(document).ready(function() {
$('.toggle-1').click(function() {
$('.toggle-1, .toggle-1-content').toggleClass('active');
$('.toggle-2, .toggle-2-content').toggleClass('active', false)
})
$('.toggle-2').click(function() {
$('.toggle-2, .toggle-2-content').toggleClass('active');
$('.toggle-1, .toggle-1-content').toggleClass('active', false)
})
})
.container {
width: 100%;
height: 1000px;
margin: 0 auto;
background-color: #eee;
}
.wrapper {
background-color: pink;
position: relative;
display: flex;
align-items: center;
}
.toggle-1,
.toggle-2 {
display: block;
width: 20px;
height: 20px;
float: left;
cursor: pointer;
color: white;
text-align: center;
background-color: green;
margin: 10px;
}
.toggle-1.active,
.toggle-2.active {
background-color: red;
}
.toggle-1-content,
.toggle-2-content {
display: none;
}
.toggle-1-content.active,
.toggle-2-content.active {
display: block;
background-color: white;
border: 1px solid black;
position: absolute;
top: 40px;
}
.toggle-1-content.active {
left: 0;
}
.toggle-2-content.active {
left: 50px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="container">
<div class="wrapper">
<div class="toggle-1">1</div>
<div class="toggle-1-content">
<p>Some content 1</p>
</div>
<div class="toggle-2">2</div>
<div class="toggle-2-content">
<p>Some content 2</p>
</div>
</div>
</div>
添加回答
舉報