结合PHP和jQuery?

时间:2011-03-08 21:07:48

标签: php jquery html

我正在尝试运行以下代码:

        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保存你的保存状态,所以我必须找到一种在开头显示和隐藏按钮的替代方法。有什么帮助吗?

2 个答案:

答案 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之前,这样在呈现页面时,按钮会在您尝试隐藏/显示之前定义。