2011-09-09 35 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

這修復了所有我的問題,但不是它只是突出其中一個桌面 - 我應該把jQuery放在我的foreach聲明中嗎? – Jamie

+0

@Jamie:你不需要jQuery將'availableDesk'類添加到'div',只需在循環中的HTML中添加即可。 '

'。請記住,「ID」必須是唯一的。 –

2

我可以看到一對夫婦在這裏潛在的問題...

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

在語法上,我想這應該是:

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

注意在選擇的#,這告訴jQuery的你正在尋找一個ID。 addClass方法可用於返回的項目,所以你需要一個停止(。)而不是逗號(,)

另一個問題是,你在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中,有3個「div」,ID爲「ddesk」。 –