Jquery - 访问每行特定的变量?

时间:2011-10-22 01:09:32

标签: php jquery

我有一个网页并使用php我查询数据库并在表格中显示结果:

<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代码中引用它?

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

Jon的建议有效,但我讨厌在HTML中嵌入数据,所以我会创建一个从id到数据的JSON映射,并将这些ID添加到TR。从点击处理程序中,您获取TR的ID并从地图中查找数据。

答案 2 :(得分: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。