【问题标题】:JQuery class add/remove not working (unknown delegation to use)JQuery 类添加/删除不起作用(使用未知委托)
【发布时间】:2016-02-18 14:32:42
【问题描述】:

我在 php 代码中运行 Javascript/Jquery。它应该做的是当有人进入页面时,检查会话(如果有会话,他们已经登录),如果有会话,它通过更改类将登录按钮变成注销按钮。我已经读到您需要一个代表团,但我不确定要检查会议的内容。这是会话检查/运行 Jquery 脚本:

 <?php

if (isset($_SESSION['mysession']) && $_SESSION['mysession'] == true) {
 echo  "<script type='text/javascript'> $('.btna').addClass('.btnh');
         $('.btna').removeClass('.btna');</script>";
}
        ?>
<!DOCTYPE html>
//html code

“btna”和“btnf”类是按钮。 “btna”是登录,“btnf”是注销。 这是注销按钮的代码:

<!DOCTYPE html>

<head>
    <link href="css/style.css" rel="stylesheet">
</head>

<body>
    <button type="submit" name="submit" class="btnh" placeholder="Logout">
        Logout
    </button>
</body>

我还没有将我的按钮链接到注销表单。 问题是即使设置了我的会话,登录按钮也不会将类更改为注销按钮。 这么简单,我将在我的 JQuery 中使用什么委托来检查会话,和/或我的 JQuery 代码是否正确(在分号、撇号等方面)?谢谢

编辑:不幸的是,到目前为止,这些答案似乎都没有成功 - 但非常感谢你们的帮助。但是,我认为问题出在我所要求的其他地方。它必须在注销按钮的 HTML 代码中,或者在 CSS 中的某个位置。我会继续寻找,但是如果你们有任何建议,请发表。

编辑 2:如果有任何区别,我的注销按钮在另一个页面上,但与 CSS 链接。这是我制作的一些新的 PHP 代码,任何人都可以看到它为什么不工作(它根本不显示)。这是我主页的正文部分。

<?php

    if (isset($_SESSION['flinders']) && $_SESSION['flinders'] == true) {
        echo '<button type="submit" name="submit" class="btna" placeholder="Login">';
        echo                    'Login';
        echo                '</button>';
    }
        else{
            echo '<button type="submit" name="submit" class="btnh" placeholder="Logout">';
            echo                'Logout';
            echo            '</button>';
        }
?>

【问题讨论】:

  • 我在第一次阅读时看到了多个错误。
  • addClass 没有类的点。
  • 为什么需要使用jquery?只需使用 php 根据您的 $_SESSION 变量切换类
  • @billyonecan 你能详细说明一下吗?我一直在尝试仅使用 php 来执行此操作,但没有成功,因此我切换到 javascript,然后切换到 JQuery。
  • 只需在标记中添加条件,例如。 &lt;button class="&lt;?php echo (isset($_SESSION['mysession']) &amp;&amp; $_SESSION['mysession'] == true) ? 'btnh' : 'btna'; ?&gt;"&gt;

标签: javascript php jquery session delegation


【解决方案1】:

您根本不需要为此使用 JavaScript。只需添加一个条件即可使用 PHP 设置类。

<?php

$btnClass = (isset($_SESSION['mysession']) && $_SESSION['mysession'] == true) 
          ? 'btnh' // value if above condition evaluates true
          : 'btna'; // value if above condition evaluates false

?>

<button type="submit" name="submit" class="<?php echo $btnClass; ?>">

【讨论】:

    【解决方案2】:

    试试

     <script>
    $(document).ready(function(){
    var sessvalue='<?php echo $_SESSION['mysession']; ?>';
    if(sessvalue == true) {
            $('.btna').addClass('btnh');
            $('.btna').removeClass('btna');
    }
    
    });
    </script>
    

    【讨论】:

      【解决方案3】:

      在 JQuery 语句中,不要使用 dot(.) 表示类。

      before : $('.btna').addClass('.btnh');
      after  : $('.btna').addClass('btnh');
      

      祝你好运。

      【讨论】:

      • 那么,如果你的课程不需要点,为什么在 ('.btna') 中有一个点呢?
      • @PlanetAlexander dot 仅用于 CSS Indicator。第一个 ('.btna') 用于 CSS 指示器。
      【解决方案4】:
      <script type='text/javascript'> 
      $('.btna').addClass('btnh');
      $('.btna').removeClass('btna');
      </script>
      

      这应该可行。如果没有,请使用它来确保 DOM 已准备好:

      <script type='text/javascript'> 
          $(document).ready(function ()
          {
              $('.btna').addClass('btnh');
              $('.btna').removeClass('btna');
          }
      </script>
      

      【讨论】:

        【解决方案5】:

        改变这个:

        echo  "<script type='text/javascript'> $('.btna').addClass('.btnh');
                 $('.btna').removeClass('.btna');</script>";
        

        echo  "<script type='text/javascript'> $('.btna').addClass('btnh');
                 $('.btna').removeClass('btna');</script>";
        

        类名前不需要加点

        【讨论】:

          【解决方案6】:

          也许,当您运行脚本时,DOM 还没有准备好。在运行之前等待就绪事件:

          $( function() {
              //your code here
          } )
          

          【讨论】:

            猜你喜欢
            • 2014-10-22
            • 1970-01-01
            • 2012-08-02
            • 2019-08-02
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-05-16
            相关资源
            最近更新 更多