2011-08-01 7 views
0

現在、Codeigniterフレームワークを使用したカレンダーシステムを開発中です。私は、カレンダーテンプレートの1日のセルがクリックされるたびに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(); 


    }); 

}); 

ただし、ページの読み込み時にdivがすべて非表示になり、クリックがまったく表示されません。

すべての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は無効な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は、ページ内で一意であることが要求されている あり ので、親にいくつかのスコープを設定する理由はなく、実際には、すべてのブラウザに存在するjQuery内のネイティブgetElementByIdを使用できるため、グローバルID検索はおそらく高速です。

IDがページ内で一意でない場合は、CSSセレクタ操作が確実に機能する前に修正する必要がある問題です。

+0

私はあなたが言っていることを理解していますが、私はこれが問題を解決するとは思わない。 – JAAulde

+0

@JAAulde - 他にも問題があるかもしれません(JSコード全体がかなり複雑すぎます)が、これも修正する必要があります。 – jfriend00

+0

私はそれについて主張していません。 – JAAulde

関連する問題