javascript - 在jQuery中相互切换按钮
问题描述
我正在尝试制作一个包含 4 个按钮的容器,并且我不想在它们之间切换。当前,当我双击按钮时切换是有效的(1click - 显示,2click - 隐藏)但是当我单击另一个带有切换选项的按钮时,该按钮会显示有关另一个按钮的信息。
当我单击另一个按钮但不是同一个按钮时,如何进行按钮切换。
<div class="newsFeedButtons">
<button class="btn" id="searchbtn" onclick="searchFeed()">Search</button>
<button class="btn" id="cryptobtn" onclick="cryptoFeed()">Crypto</button>
<button class="btn" onclick="twitterFeed()">Twitter</button>
</div>
<div id="twitterDIV" style="display: none;">
<a class="twitter-timeline" data-width="550" data-
height="400" href="https://twitter.com/Bitcoin?
ref_src=twsrc%5Etfw">Tweets by Bitcoin</a>
<script async
src="https://platform.twitter.com/widgets.js" charset="utf-8">.
</script>
</div>
<div class="row">
<div id="newsResult"></div>
</div>
JavaScript 代码:
function twitterFeed() {
var x = document.getElementById("twitterDIV");
if (x.style.display === "none") {
x.style.display = "block";
} else {
x.style.display = "none";
}
}
$(function() {
$("form").submit(function() {
return false;
});
});
function searchFeed() {
var x = document.getElementById("newsResult");
if (x.style.display === "none") {
x.style.display = "block";
} else {
x.style.display = "none";
}
}
$(function() {
$("form").submit(function() {
return false;
});
});
解决方案
您也可以在其他元素上使用一种简单的切换:
function showContent() {
$('[data-show]').each(function(e) {
var thisButton = $(this);
var thisTarget = $( thisButton.data('show') );
thisTarget.toggleClass('active', thisButton.hasClass('active'));
});
};
showContent();
$('[data-show]').on('click', function(e) {
e.preventDefault();
var thisButton = $(this);
thisButton.siblings().removeClass('active');
thisButton.addClass('active');
showContent();
});
.newsFeedButtons .active {
border-color: red;
}
.newsFeedContent > div {
display: none;
}
.newsFeedContent > div.active {
display: block;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="newsFeedButtons">
<button class="btn active" data-show="#searchDiv">Search</button>
<button class="btn" data-show="#cryptoDIV">Crypto</button>
<button class="btn" data-show="#twitterDIV">Twitter</button>
</div>
<div class="newsFeedContent">
<div id="searchDiv">Search...</div>
<div id="cryptoDIV">Crypto...</div>
<div id="twitterDIV">Twitter...</div>
</div>
同样在JSFiddle
推荐阅读
- text-to-speech - 尝试获取 Microsoft Text-to-speech 上的语音列表时出现 404 错误
- ios - Swift 泛型 - 无法将值转换为类型
- reactjs - 为什么我不能使用全局空间中的 react 和 express 库(通过 npm i -g pkgName 安装)但我可以使用全局空间中的 react-scripts
- sql - postgres/Sequelize:如果属性值匹配,则编辑 jsonb 数组中的对象
- mysql - 如果没有未来记录,则选择过去的记录,否则选择第一个未来记录
- javascript - 在打字稿中输入路线(反应导航)
- javascript - 我的按钮文本总是显示在我为其设置的填充之外?
- java - Callbable 语句 JDBC 性能问题
- linux - ftp:登录到服务器,自动更改远程目录,然后带来用户输入?
- python - 得到[Errno 54]连接由python中的对等方重置