获取表jQuery中的第三个单元格

时间:2013-08-03 02:41:12

标签: jquery

我以为我对此有一个不错的处理,但显然不是。所以我们再来一次我想从单击的位置两个空格的单元格的值。它将是该行的第3列。这是一些需要理解的代码。

我像这样创建表

PHP

$project_info = $db->prepare("
    SELECT  projects.id,
        projects.project_name,                  
        projects.pm,    
        // ...more columns   
    FROM projects
    WHERE account_id = ?                        
"); 

$project_info->bindValue(1, $aid, PDO::PARAM_STR);
$project_info->execute();       

echo "<table class='projects_contentTable'>";
echo "<th class='content_th'>" . "" . "</th>";
echo "<th class='content_th'>" . "" . "</th>";
echo "<th class='content_th'>" . "Job #" . "</th>";
// ...more headers   

while ($row = $project_info->fetch(PDO::FETCH_ASSOC)) {             
    echo "<tr>";
    echo "<td class='content_td'>" . "<img src='images/edit.png' class='edit_project_record'/>" . "</td>";
    echo "<td class='content_td'>" . "<img src='images/view.png' class='view_project_record'/>" . "</td>";              
    echo "<td class='content_td'>" . "<a href='#'>" . $row['id'] . "</a>" . "</td>";
    // ...more td's
    echo "</tr>";               
}
echo "</table>";

和此代码从单元格中获取值

jquery的

$('body').on('click', '.edit_project_record', function() {
    pid = $(this).parent().find('td:eq(3)').text();
    alert(pid); 
    loadEditProject();
});

现在当警报触发时,对话框中没有任何内容。所以我没有从正确的单元格中获取值。我试图在逻辑上打破这个,但我被卡住了。这是我的理解,明显错误

  1. $(this)=图片,里面&#39; td&#39;元件。
  2. parent()=实际的&#t;&#39;拿着图像的元素
  3. 找到(&#39; td:eq(3)&#39;)=找一个特定的&#39;&#39;来自父位置,在本例中是行的第三列。
  4. .text()=所选单元格的文本值
  5. 请向我解释我的逻辑在哪里,所以我可以解决这个问题。谢谢

4 个答案:

答案 0 :(得分:3)

考虑到eq为零,所以如果你想获得第三列,你需要使用eq(2)

pid = $(this).closest('tr').find('td:eq(2)').text();

正如其他人的答案已经指出的那样,父母不会给你排,因为this父母是td。您可以使用closest

答案 1 :(得分:3)

一些事情:

  1. :eq()从零开始,因此您需要td:eq(2)
  2. $(this)是图片,因此$(this).parent()tdfind()会搜索后代,并且您选择的td内没有td
  3. 所以你需要这个:

    $(this).closest('tr').find('td:eq(2)').text();
    

    closest()从当前元素开始并遍历DOM,直到找到与选择器匹配的元素。在家长tr中,您可以find td s。

    小提琴,用div而不是图像:http://jsfiddle.net/bAz8P/

答案 2 :(得分:1)

您可以使用.closest()查找该行,然后找到该单元格(0基于eq):

$('body').on('click', '.edit_project_record', function() {
    pid = $(this).closest('tr').find('td:eq(2)').text();
    alert(pid); 
    loadEditProject();
});

答案 3 :(得分:1)

如果您确实希望单元格2单元格位于您单击的单元格的右侧...

$('.projects_contentTable').on('click', 'td img', function() {
    var myTD = $('td').index(this);
    var pid = $(this).closest('tr').find('td:eq(myTD + 2)').text();
    alert(pid);
    loadEditProject();
 });