PHP 脚本 JQuery 抓取了错误数量的元素

PHP script JQuery grabs wrong number of elements

我一直在使用 JQuery 到 show/hide 基于登录状态的元素,但是我 运行 得到了一些意想不到的结果,代码如下:

<script>
    $(document).ready(function(){
        $("#uploadform").hide();
    });
</script>

如果用户未登录,这将隐藏表单。

    <h2 id="needlogon"> You need to be logged in </h2>
    <a id="needlogon" href="index.php"> Back to start </a>

这些仅在用户未登录时显示

<?php
if (isset($_SESSION['cid'])){
   echo '<script>
           $(document).ready(function(){
           $("#uploadform").show();
           $("needlogon").hide();
           });
         </script>';
}
?>

上传表单按预期 shown/hid,但在设置条件 ($_SESSION['cid']) 时不会隐藏需要登录的元素。唯一可行的方法是,如果我将元素的 ID 更改为 needlogon1 和 needlogon2,并将 JQuery 更改为:

<?php
if (isset($_SESSION['cid'])){
   echo '<script>
           $(document).ready(function(){
           $("#uploadform").show();
           $("#needlogon1").hide();
           $("#needlogon2").hide();
           });
         </script>';
}
?>

我确定我只是遗漏了一些愚蠢的东西,有人知道它是什么吗?

首先,您的 jQuery 选择器已关闭:

// $("needlogon").hide();
$("#needlogon").hide(); // you forgot the #

话虽如此,您正在使用一个 ID -- 它应该是 唯一。您可能希望将 needlogin 的两种用法更改为 class 而不是 id,然后您的选择器将是 .needlogon,如下所示:

$(".needlogon").hide();