2011-09-09 8 views
0

私は曜日、時刻の開始と時刻の終了を要求するフォームに基づいて利用可能な強調表示されたデスクを取得しようとしています。私は利用可能なすべてのデスクをエコーアウトすることができますが、私はそれで動作するjqueryを得ることはできません。php配列とjqueryクラスを追加

foreach ($allData as $desk => $id){ 

    foreach ($id as $computer){?> 
     <div id="<?php echo $desk?>"></div><?php 
    } 

} 

<style> 
    .availableDesk{ 
background: #000000 
    } 
</style> 

<script> 
    $(document).ready(function() { 
    jQuery(" <?php echo $desk ?> "), addClass('availableDesk') ; 
}) 
</script> 

デスク:

<ul class="tabs"> 
<li id="1A"><a href="#1A"><div id="ddesk"></div></a></li> 
    <li id="1B"><a href="#1B"><div id="ddesk"></div></a></li> 
    <li id="1C"><a href="#1C"><div id="ddesk"></div></a></li> 
</ul> 

答えて

2

あなたのPHPブロックの最後に?>を逃しています。

<?php 
foreach ($allData as $desk => $id){ 

    foreach ($id as $computer){?> 
     <div id="<?php echo $desk?>"></div><?php 
    } 

} // You need a "?>" here 
?> 

jQueryコードにはいくつか問題があります。まず、$deskがIDの場合、$('#ID')を実行する必要があります。次に、ピリオドではなく、addClassの前にコンマがあります。

jQuery("#<?php echo $desk ?>").addClass('availableDesk'); 

P.S. HTML IDは数字で始まるはずではありません。また、同じIDを持つ複数の要素を持つことはできません。代わりにクラスを使用することをお勧めします。

+0

私のすべての問題を修正し、それだけではありませんデスクの1つを強調表示します。私はforeach文でjqueryを置くべきですか? – Jamie

+0

@Jamie:あなたの 'div'に' availableDesk'クラスを追加するためにjQueryは必要ありません。ループのHTMLに追加するだけです。 '

' 'ID'は一意である必要があることを忘れないでください。 –

2

私は...ここに

文法的に
jQuery("<?php echo $desk ?>"), addClass('availableDesk') ; 

を潜在的な問題のカップルを見ることができ、私はこれがあるべきだと思う:

jQuery("#<?php echo $desk ?>").addClass('availableDesk'); 

注セレクタで#、これはそのあなたのjQueryを伝えますIDを探しています。コンマ(、)ではなく、停止(。)が必要です。

もう一つの問題は、PHPでforeachループでIDを記述していることです。一意のIDを持っています - jQuery("#<?php echo $desk ?>")を書くと文がforeachループの外側にあるため、対象のIDと一致しません。

あなたはデスクがPHPで利用可能であることがわかっている場合は、最良のオプションは、あなたが机を書いてクラスを設定することです...

<div id="<?php echo $desk?>" class="availableDesk"></div> 
+2

また、彼はforループの各divを同じIDに設定しているようです。 HTML IDは一意である必要があります。 –

+0

True - HTML IDは文字で始まり一意である必要があります。提供されたコードに基づいて、それらが存在する可能性はありますが、そうでない可能性もあります。 – Fenton

+0

投稿されたHTMLには、ID「ddesk」の3つの「div」があります。 –