我正在尝试运行以下代码:
if($thisIsSaved > 0 && $_SESSION["loggedIn"] == 1)
{
//show unsave
echo "<script>$('#unsave').show();$('#save').hide();</script>";
}
elseif($thisIsSaved == 0 && $_SESSION["loggedIn"] == 1)
{
//show save
echo "<script>$('#save').show();$('#unsave').hide();</script>";
}
else
{
echo "<script>$('#unsave').hide();$('#save').hide();</script>";
}
<button id="save">Save</button>
<button id="unsave">Unsave</button>
Run Code Online (Sandbox Code Playgroud)
我曾经在纯PHP中使用它,没有jQuery.它的作用是,取决于$ thisIsSaved的值,它将显示或不显示其中一个或两个按钮.现在它是jQuery,并且页面不能像使用PHP一样使用jQuery保存你的保存状态,所以我必须找到一种在开头显示和隐藏按钮的替代方法.有帮助吗?
您需要在document.ready调用中包装脚本中的内容:
...
echo "<script>$(document).ready(function() { $('#unsave').hide();$('#save').hide(); });</script>";
...
Run Code Online (Sandbox Code Playgroud)
问题是,由于这些脚本的执行没有延迟到document.ready,因此在实际解析元素之前运行jQuery命令(因为按钮出现在脚本标记之后).
通常最好确保运行触及DOM的任何jQuery都在document.ready中运行,以确保所有内容都已被解析.你会在大多数在线例子中看到这一点.
所有这一切,为什么要将处理卸载到客户端?如果你可以在PHP中输出一个类/样式来隐藏/显示按钮,我建议保留它,除非有其他特定的客户端逻辑需要发生.