Команды .show () и .hide () работают неправильно - PullRequest
0 голосов
/ 01 августа 2011

В настоящее время я занимаюсь разработкой календарной системы со структурой Codeigniter.Я хочу, чтобы div отображался каждый раз при нажатии на ячейку дня в шаблоне календаря.

Div создаются с помощью цикла php for и заполняются из базы данных в следующем файле представления:

calendar_view.php

    <div class="cal_container">

<?php echo $calendar; ?>

<div class="day_expanded_container">

<?php for ($i = 1; $i<=31; $i++):?>

    <div class="day_expanded" id"<?php echo 'd'.$i;?>">

    <?php if (isset($calendar_info[$i])):?>


        <h2><?php echo $calendar_info[$i]['title'];?></h2>

        <p><?php echo $calendar_info[$i]['text']?></p>

    <?php else: ?>

        <h2>No Data for this Date</h2>

        <p>There is currently nothing planned for this Calendar date.</p>

    <?php endif; ?>

    </div>

<?php endfor;?>

</div>

</div>

Затем применяется следующий jQuery:

scripts.js

$(document).ready(function(){

    var divs = $('div.day_expanded_container > div').get();

    var today = $(".today").attr("id");

    $(divs).hide().filter('#d' + today).show();

    $(".day").click(function() {

        var selected = $(this).attr("id");


        $(divs).hide().filter('#d' + selected).show();


    });

});

Однако при загрузке страницы все дивы скрыты, и щелчок не отображается вообще.

Все идентификаторы и т.Я не могу найти в CSS ничего такого, что могло бы перевесить.Есть ли что-то явно очевидное, что я делаю неправильно?

Большое спасибо

Ответы [ 2 ]

2 голосов
/ 01 августа 2011

Вы пропускаете знак равенства:

id"<?php echo 'd'.$i;?>"

должно быть

id="<?php echo 'd'.$i;?>"
1 голос
/ 01 августа 2011

Если у вас есть идентификатор элемента, который вы хотите скрыть, вы должны просто обратиться к нему напрямую, а не к сложному фильтру, который вы используете. Например, если идентификатор, который вы хотите скрыть, это:

'#d' + selected

тогда вам просто нужно использовать этот jQuery, чтобы скрыть его:

$('#d' + selected).hide();

Идентификаторы должны быть уникальными на вашей странице, поэтому нет оснований охватывать их каким-либо родителем, и, фактически, поиск по глобальным идентификаторам, вероятно, быстрее, потому что он может использовать встроенный getElementById внутри jQuery, который присутствует во всех браузеры.

Если по какой-либо причине ваши идентификаторы не являются уникальными на вашей странице, то эту проблему вы должны решить, прежде чем операции селектора CSS над ними будут работать надежно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...