我目前正在开发一个带有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中找不到任何会覆盖的东西。有什么明显的事情我做错了吗?
非常感谢
答案 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选择器操作可靠地运行之前,您必须解决这个问题。