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