.show()和.hide()命令无法正常工作

时间:2011-08-01 19:07:13

标签: jquery html css codeigniter

我目前正在开发一个带有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();


    });

});

然而,在加载页面时,div都被隐藏了,点击根本没有显示。

所有id等都是正确的,我在css中找不到任何会覆盖的东西。有什么明显的事情我做错了吗?

非常感谢

2 个答案:

答案 0 :(得分:2)

你错过了一个等号:

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

应该是

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

答案 1 :(得分:1)

如果你有要隐藏的元素的id,你应该直接解决它而不是你正在使用的复杂过滤器。例如,如果要隐藏的ID是:

'#d' + selected

然后,你应该使用这个jQuery来隐藏它:

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

ID必须在页面中是唯一的,因此没有理由将它们限定为某个父级,事实上,全局ID搜索可能更快,因为它可以使用jQuery中存在的本机getElementById浏览器。

如果出于任何原因,您的ID在您的页面中不是唯一的,那么在CSS选择器操作可靠地运行之前,您必须解决这个问题。