2011-08-01 26 views
0

我目前正在開發Codeigniter框架的日曆系統。我希望每次點擊日曆模板中的每天一個單元格時都會顯示一個div。.show()和.hide()命令無法正常工作

的div通過用於循環的PHP創建並從下面的視圖文件數據庫填充:

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然後施加:

腳本.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(); 


    }); 

}); 

但是,在加載頁面divs是全部隱藏,並且點擊根本不顯示。

所有的ID等都是正確的,我無法找到任何東西在CSS將會超越。有什麼顯而易見的,我做錯了嗎?

非常感謝

+2

示例代碼將是比PHP代碼更多的幫助。 –

+0

你有$(「.day」)。click(...)',但是我沒有看到'.day'類的元素。 –

+0

我不明白你爲什麼要使用'.get()',然後繼續傳遞數組回到jQuery工廠。另外,從我通過JS閱讀的內容可以看出,您正在日曆的某個位置創建諸如「id =」1「」的ID。根據http://www.w3.org/TR/html4/types.html#h-6.2這些是無效的ID,可能會導致一些你的麻煩。 – JAAulde

回答

2

你缺少等號:

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

應該是從客戶端

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

這解決了我的問題 - 雖然我意識到我已經過了複雜的問題,造成重複和無效ID的問題。我想爲自己失去如此重要的東西而開槍。雖然謝謝! –

+0

+1,很好。 – JAAulde

1

如果你有你想要隱藏的元素的ID,你應該解決這個問題,而不是直接您正在使用複雜的過濾器。舉例來說,如果你要隱藏的ID是:

'#d' + selected 

那麼,你應該只使用這個jQuery來隱藏:

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

ID被要求在你的網頁唯一的,這樣有沒有理由將它們限制到某個父級,實際上,全局ID搜索的速度可能更快,因爲它可以在所有瀏覽器中使用jQuery中的本機getElementById。

如果由於某種原因,您的ID在您的頁面中不唯一,那麼這是一個問題,您必須在它們的CSS選擇器操作可靠工作之前進行修復。

+0

雖然我明白你在說什麼,但我不認爲這會解決問題。 – JAAulde

+0

@JAAulde - 也可能有其他問題(整個JS代碼非常複雜),但是這個問題也應該修復。 – jfriend00

+0

我不是在爭論。 – JAAulde