【问题标题】:PHP script JQuery grabs wrong number of elementsPHP脚本JQuery抓取错误数量的元素
【发布时间】:2018-01-16 21:26:07
【问题描述】:

我一直在使用 JQuery 来显示/隐藏基于登录状态的元素,但是我遇到了一些意想不到的结果,代码如下:

<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>';
}
?>

上传表单按意图显示/隐藏,但设置条件 ($_SESSION['cid']) 时不会隐藏需要登录元素。它起作用的唯一方法是,如果我将元素的 ID 更改为需要登录 1 和需要登录 2,并将 JQuery 更改为:

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

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

【问题讨论】:

  • 您知道这不会以任何方式阻止人们在未登录的情况下使用您的上传表单,对吧?
  • id 是单数的。您只能拥有一个具有相同 id 的元素
  • 你错过了这里的#:$("needlogon").hide();

标签: javascript php jquery show-hide


【解决方案1】:

对于初学者,您的 jQuery 选择器已关闭:

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

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

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

【讨论】:

  • 哦,我知道这很愚蠢,非常感谢,我将开始为这些事情使用类!
猜你喜欢
  • 2016-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多