2011-10-22 25 views
0

我有一個網頁,並使用PHP進出口查詢一個數據庫中的表像這樣顯示結果:Jquery - 每行特定的訪問變量?

<table id="tablelist"> 
<thead> 
<tr> 
<th>Header1</th> 
<th>Header2</th> 
<th>Header3</th> 
</tr> 
</thead> 
<tbody> 
<tr> 
<td>Info here1</td> 
<td>Info here1</td> 
<td class="actions">Action1 - Action2 - Action3</td> 
</tr> 
<tr> 
<td>Info here2</td> 
<td>Info here2</td> 
<td class="actions">Action1 - Action2 - Action3</td> 
</tr> 
</tbody> 
</table> 

現在每一行都有特定於該行是從數據庫中是唯一的信息。例如,主要ID,日期和類別。當有人點擊任何行的操作時,我需要獲得這些特定於他們所點擊行的2條信息。目前,我試着這樣做:

<div class="row_data">{info2 in json format}</div>  
<tr> 
    <td>Info here1</td> 
    <td>Info here1</td> 
    <td class="actions">Action1 - Action2 - Action3</td> 
    </tr> 
<div class="row_data">{info2 in json format}</div>  
<tr> 
    <td>Info here2</td> 
    <td>Info here2</td> 
    <td class="actions">Action1 - Action2 - Action3</td> 
    </tr> 

因此,當有人動作鏈接點擊它會得到ROW_DATA的前值,這是JSON格式。我會使用jquery來解析json值並使用jquery代碼其餘部分中找到的信息。但我被告知這是無效的HTML,不推薦。當一個動作被點擊時,什麼會是一個推薦的/最佳的故事動態數據每行的使用方式,以便我可以在我的jQuery代碼中引用它?

回答

0

做到這一點的方法是使用HTML 5的數據屬性:

<tr id="foo" data-something="put whatever you want in here"> 
    <!-- content --> 
</tr> 

然後,您可以訪問你

$("#foo").data("something") 

其中存儲的信息的data-something值可以是任何你喜歡(只要通過htmlspecialchars進行篩選(如果直接從PHP回顯),並且如果更方便(通常是這樣),則可以使用多個數據屬性。

還有關於這個問題的post by John Resig

+0

但如果我有id =「foo」每行不是不是?在頁面上有重複的ID? – John

+0

@John:當然。那只是一個例子。您也可以執行'$(this).closest(「tr」)。data(...)'或選擇將屬性完全放在其他元素上。 – Jon

+0

建議使用data- {name}屬性不要爲所有id使用foo –

0

Jon的建議很有效,但我討厭將數據嵌入到HTML中,所以我會創建一個從ID到數據的JSON映射,並將這些ID添加到TR中。從點擊處理程序中,您可以獲取TR的ID並從地圖中查找數據。

+0

從概念上講,這是嵌入數據(ids)在HTML中是一樣的。無可否認,它的優點是可以讓您擁有有效的非HTML 5標記,而無需爲數據添加額外的元素。 – Jon

+0

@喬恩:你是完全正確的,再加上該解決方案更加靈活 - 採用諧音(在服務器端腳本局部視圖)時,例如,它更容易實現'比在「非嵌入腳本的整個數據'屬性凌亂「的方式。 – Tadeck

0

我覺得我累了,可能誤解了這個,所以請原諒,如果我建議一些完全錯誤的...

所以說有人點擊動作1在任何行。也許你會與每個鏈接的點擊收聽開始假設你給你的鏈接被稱爲「動作」類...

<tr> 
    <td class="json_info" style="display:none">{your json string}</td> 
    <td>Info 1</td> 
    <td>Info 2</td> 
    <td><a class="action">action link</a></td> 
</tr> 

$('.action').click(function(){ 
    var json = $(this).parent().find('.json_info').html(); 
}); 

如果json_info的HTML是格式正確的JSON字符串,那麼它應該能成爲從jQuery選擇調用中讀取爲json。