javascript - 在按钮单击时显示内容然后隐藏该按钮
问题描述
我正在使用 Wordpress,并且我有一个 Iframe 游戏,我想阻止该游戏运行,直到单击按钮(玩游戏)。
所以我想创建一个 div 区域(类似于按钮),当它被点击时,游戏将显示,并且该 div 区域消失。
这是我使用的代码:
jQuery(document).ready(function(){
$('.playbutton').on('click',function(e){e.preventDefault();
var post_id = jQuery(this).data('id');
if($('#playgame').attr("onClick")==undefined){
$('#playgame').css("display","none");
}
$('#game').css("display","block");
jQuery.ajax({
url:'my_site/wp-admin/admin-ajax.php',
type:'post',
data:{action:'display_game',post_id:post_id},
success:function(response){
$("#game").html(response);
}});});});
#playgame {
height: 200px;
margin: 0px;
}
.playbutton {
height: 200px;
cursor: pointer;
background-color: #353535;
}
p.playnowtext {
font-size: 55px;
display: inline-block;
color: #ffc402;
text-decoration: underline;
}
#bashabasha {
padding: 70px 0;
text-align: center;
display: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="playgame">
<div class="playbutton" data-id="<? echo get_the_ID(); ?>">
<p class="playnowtext">Play Game</p></div> </div>
<div id="game">
<!--?php echo get_game( $post->ID );?-->
</div>
不幸的是,出现了问题,因为 div 区域与 css 一起出现,但是当我点击玩游戏时,什么也没有发生。div 区域仍然存在,并没有消失,游戏也没有开始运行。
我知道 Javascript 代码有问题,但我不知道。
您的帮助将不胜感激。
解决方案
好的,根据您的描述,我尝试在没有 API 响应的情况下实现它,我在这里使用了虚拟文本(您可以在此处使用您的响应)。
默认情况下,任何你想要的 div 或按钮都将保持显示,并且游戏区域将被 css 隐藏,一旦你从 API 调用中获得响应,你将内容放入该#game
元素并使用.show()
方法显示它。
检查代码片段是否对您有意义。
$(document).ready(function(){
$('.playbutton').on('click', function(e) {
e.preventDefault();
var post_id = $(this).data('id');
if (typeof ($('#playgame').attr("onClick")) === 'undefined') {
$('#playgame').css("display", "none");
console.log('no id found')
}
$('#game').css("display", "block");
$.ajax({
url: 'my_site/wp-admin/admin-ajax.php',
type: 'post',
data: {
action: 'display_game', post_id: post_id
},
success: function (response) {
$("#game").html(response).show(); // add .show() to show the '#game' element;
}
});
});
});
#playgame {
height: 200px;
margin: 0;
}
.playbutton {
height: 200px;
cursor: pointer;
background-color: #353535;
}
p.playnowtext {
font-size: 55px;
display: inline-block;
color: #ffc402;
text-decoration: underline;
}
#bashabasha {
padding: 70px 0;
text-align: center;
display: none;
}
#game {
display: none; /* as this is hidden by default and will be shown by javascript */
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="playgame">
<div class="playbutton" data-id="<? echo get_the_ID(); ?>">
<p class="playnowtext">Play Game</p>
</div>
</div>
<div id="game">
<!--?php echo get_game( $post->ID );?-->
<!-- let's assume we get our expected contents here through the API request and the bellow content is that -->
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>
<!-- And these are hidden by default -->
<?php
if ( function_exists( 'get_game' ) ){
echo get_game( $post->ID );
}
?>
</div>
推荐阅读
- django - Django forms.ChoiceField 总是改变
- asp.net-web-api - 使用 MEF 进行依赖注入时请求完成时释放 DBContext
- java - 在 Weblogic 服务器上运行应用程序时出现此错误
- django - 如何将“ON DELETE”规则添加到 PostgreSQL 数据库表中的现有列?
- python - 检查IP是否在Python3的网络中
- typescript - 如何在 ts-node 项目中扩展 express Request 类型?
- conditional - 使用嵌入式条件运行 cloud-init
- gitlab - GitLab - 参考文件行/行范围与问题片段
- javascript - 键盘与下拉列表中的数字交互
- sql - 加入和排序后可以分组吗?