JQuery类添加/删除不起作用(使用未知的委托)

时间:2015-11-17 09:25:29

标签: javascript php jquery session delegation

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

7 个答案:

答案 0 :(得分:5)

在JQuery语句中,不要在类中使用点(。)。

before : $('.btna').addClass('.btnh');
after  : $('.btna').addClass('btnh');
祝你好运。

答案 1 :(得分:0)

改变这个:

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

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

您无需在班级名称

之前添加点

答案 2 :(得分:0)

<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>

答案 3 :(得分:0)

Template.PanelLayout.onRendered(function() {
   $(".button-collapse").sideNav();
   $('.collapsible').collapsible();
});

答案 4 :(得分:0)

试试这个......:D

&#13;
&#13;
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
    <button type="submit" id="myChangeBtn" name="submit" class="btnh" placeholder="Logout">
        Logout
    </button>
</body>
</html>
<?php
if (isset($_SESSION['mysession']) && $_SESSION['mysession'] == true) {
	echo "<script type='text/javascript'>
		if($('#myChangeBtn').hasClass('btna')){ $('#myChangeBtn').removeClass('btna');}
		if(!$('#myChangeBtn').hasClass('btnh')){ $('#myChangeBtn').addClass('btnh');}
		</script>";
}
?>
&#13;
&#13;
&#13;

答案 5 :(得分:0)

根本不需要使用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; ?>">

答案 6 :(得分:-1)

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

$( function() {
    //your code here
} )
相关问题