我试图在用户点击删除链接后使用Jquery显示一个确认框。单击删除链接时,它会将post_id发送到URL。只要设置了它并且它不为空,我就会触发动画,它将显示隐藏的确认框。
到目前为止,这是我目前无法正常工作的内容:
// if admin wants to delete a post check for post_id
if(isset($_GET['post_id']) && !empty($_GET['post_id'])){
$delete_id = (int)$_GET['post_id'];
$animate = true;
echo '<script type="text/javascript">';
echo 'var animate = '.$animate;
echo '</script>';
}
GET变量设置正确。
在我的jquery文件中,我有:
$(document).ready(function(){
if(animate == true){
$("#delete_confirm").fadeIn('3000','swing');
}
});
和确认箱:
<div id="delete_confirm">
<p>Please confirm you want to delete this post.</p>
<input type="button" id="delete" name="delete" value="confirm" />
</div>
在样式表中设置了display:none;
。
为什么animate
变量设置为true时不显示?
由于
答案 0 :(得分:3)
<强>更新强>
试试,测试和工作:
<?php
if(isset($_GET['post_id']) && !empty($_GET['post_id'])){
$delete_id = (int)$_GET['post_id'];
$animate = true;
}
?>
<html>
<head>
<title>Simulation</title>
</head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script type="text/javascript">
var prop = {
animate: "<?php echo $animate; ?>"
};
$(document).ready(function(){
if(prop.animate == 1){
$("#delete_confirm").fadeIn('3000','swing');
}
});
</script>
<body>
<div id="delete_confirm">
<p>Please confirm you want to delete this post.</p>
<input type="button" id="delete" name="delete" value="confirm" />
</div>
</body>
</html>
答案 1 :(得分:2)
您应该取消设置div上的display:none;
属性,并在页面加载时调用.fadeOut(0)
,或在CSS文件中设置其opacity:0.0;
。
此外,您可以使用window.location
对象的search
属性来处理客户端上的GET参数检查,而不是包含所有此服务器端代码注入内容,然后检测特定参数设置正则表达式匹配。这样您就不必使用任何内联JavaScript。
var matches = window.location.search.match(/post_id/g);
if(matches && matches.length > 0)
{
// do animation
} else {
// do something else
}
这样的事情应该有效,而且我个人喜欢这样做而不是注入脚本标签和内联JavaScript。
答案 2 :(得分:0)
php检查是否设置了GET变量,如果设置了$ animate 为真。在此之后,Jquery检查animate变量, 如果它设置为true,则应该发生fadein。
对我来说,这非常令人困惑。让我试着再研究一下。
<div id="delete_confirm">
)。根据您的评论和代码,我猜你做了HTTP GET请求。在这种情况下,您重新加载页面。是的,PHP在$_GET['post_id']
中获得了正确的值,并且帖子被删除了。
但是你得到了全新的HTML页面。在这个页面上,div <div id="delete_confirm">
从一开始就是不可见的。这就是它没有显示和隐藏的原因。
当您查看源代码时,您可以找到JS脚本<script type="text/javascript">...
,我请求代码$(document).ready(function(){...
也可以。但是你可以在新加载的HTML页面上获得它。
如果我在这里弄错了,请纠正我。
我认为你想要隐藏你可能想要使用AJAX的确认框。但是,您可能还想通过更改页面来从页面中删除帖子。
答案 3 :(得分:-2)
引用jQuery文档:“The .fadeIn() method animates the opacity of the matched elements.”
.fadeIn()将有效地将元素的css不透明度从0更改为1.
您已经声明在CSS中你的元素有 display: none;
所以你所做的只是改变1
的不透明度(假设你没有将CSS中的内容设置为1
,同时将显示设置为none
...所以它永远不会显示。
这似乎适用于.animate()
不允许您“动画”显示类型(从“无”到“阻止” - 您使用不透明度) ...但不适用于.fadeIn()
/ .fadeOut()
执行允许您使用CSS display
属性淡入/淡出一个块。
我的不好,我让两者感到困惑。