jQuery-функция для переключения класса существует дважды, но работает только один раз

У меня есть одна страница index.php, содержание которой изменяется независимо от того, активировали ли вы сеанс или вышли из системы.

Когда пользователи вошли в систему, клик по ссылке «showhide» должен показать класс «users».
Когда пользователи выходят из системы, ссылка «showhide» скрывается, и вместо этого отображается ссылка «showhide2», которая должна отображать класс «users2» при ее нажатии.

Я нашел jQuery-сниппет онлайн, который делает именно это и отлично работает для ссылки «showhide». К сожалению, он не работает для ссылки «showhide2» — класс всегда виден …

Вот мой код:

<div id="content" style="margin-top:10px;height:100%;">
<?php
/*echo "Der Nutzername ist ".$_SESSION['user'];
echo "<br>Die Session lautet ".$_SESSION['sessionname'];
echo "<br>".session_id();*/$sArray = explode(".",$_SESSION['sessionname']);
$session1 = $sArray[0];
$session2 = $sArray[1];
$sessionausblenden = $_SESSION['sessionname'];
if (!isset($sessionausblenden)){
echo "<style type='text/css'>
#showhide{
visibility:hidden !important;
}

.users{
visibility:hidden !important;
}

#logout {
visibility:hidden !important;
}
</style>";}
elseif (isset($sessionausblenden)){
echo "<style type='text/css'>
#showhide2{
visibility:hidden !important;
}

.users2{
visibility:hidden !important;
}
</style>";

}?>
<a id="showhide" href="#" style="background:#<?php echo $session2?>;">+</a>
<a id="showhide2" href="#" style="background:#<?php echo $session2?>;">?</a>
<a id="logout" onclick="return confirm('Are you sure?')" href="logout.php">-</a>
<script type="text/javascript">
$(document).ready(function () {
$('.users').hide();

$('a#showhide').click(function () {
$('.users').toggle(400);
});
});
</script>
<script type="text/javascript">
$(document).ready(function () {
$('.users2').hide();

$('a#showhide2').click(function () {
$('.users2').toggle(400);
});
});
</script>

<center><h1>Group Chat In PHP</h1></center>
<div class="chat">

<div class="users" style="background-color:#<?php echo $session2?>;">
<?php include("users.php");?>
</div>
<div class="users2" style="background-color:#<?php echo $session2?>;">
<?php include("users.php");?>
</div>
<div class="chatbox">
<?php
if(isset($_SESSION['user'])){
include("chatbox.php");
}else{
$display_case=true;
include("login.php");
}
?>

</div>
</div>
</div>

Вы можете увидеть live-версию здесь: http://team3.digital-cultures.net/index.php
Просто введите имя по вашему выбору и выберите один из вариантов «Пуск» и «Ziel», и ваша сессия будет запущена (и чат открыт).

Можете ли вы помочь мне найти ошибку?

Спасибо!

2

Решение

Кажется, событие не привязано к # showhide2. Если вы слушаете на уровне документа и позволяете ему перейти к #showhide в качестве цели, это может сработать. Это может произойти для динамически загружаемых элементов.

+ Изменить

        $(document).ready(function () {
$('.users2').hide();

$('a#showhide2').click(function () {
$('.users2').toggle(400);
});
});

к

        $(document).ready(function () {
$('.users2').hide();

$(document).on('click','#showhide2',function () {
$('.users2').toggle(400);
});
});

Самое главное, пожалуйста, устраните эту ошибку:

$(".msgs").animate({scrollTop:$(".msgs")[0].scrollHeight}); на линии 2 chat.js $(".msgs")[0] не определено

Нет подходящих элементов $('.msgs'), Оберните это следующим:

if($('.msgs').length) {
$(".msgs").animate({scrollTop:$(".msgs")[0].scrollHeight});
}

Возможно, поэтому событие не становится связанным.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]