代码之家  ›  专栏  ›  技术社区  ›  Udders

jquery获取表行ID的帮助

  •  1
  • Udders  · 技术社区  · 15 年前

    我正在用jquery和php执行Ajax请求,我所做的是通过一个数组循环并生成一个表,每个循环都会创建一个新的循环并给它一个ID,当它们单击read me链接时,Ajax会返回更多内容,单击read more时,我希望相关联的表行可以从表中删除,您可以从下面可以看到我的尝试。

    <div id="new" class="tabdiv">
        <table>
        <?php
            $colours = array("#f9f9f9", "#f3f3f3"); $count = 0;
            if(isset($newSuggestions)) {
                foreach($newSuggestions as $row) {
                    if($row['commentRead'] == 0) {
        ?>
                        <tr id="<?=$row['thoughtId'];?>" bgcolor="<?php echo $colours[$count++ % count($colours)];?>">
        <?php
                            echo "<td>".substr($row['thought'], 0,50)."...</td>";
                            echo "<td class='read'><a href='".base_url()."thought/readSuggestion/".$row['thoughtId']."' class='readMore'>Read More</a>";
                        echo "</tr>";
                    }
                }
            } else {
                echo "You have no new suggestions";
                }
        ?>
        </table>
    
    $('a.readMore').click(function(){
                $('#readMore').fadeIn(500);
                var url = $('a.readMore').attr('href');
                $.ajax({
                    url : url,
                    type : "POST",
                    success : function(html) {
                        $('#readMore').html(html)
                    },
                    complete : function() {
                        $('tr').remove()
                    } 
                });
                return false;
            });
    
    2 回复  |  直到 15 年前
        1
  •  4
  •   kgiannakakis    15 年前

    您可以这样获得行的ID:

    $(this).parent().parent().attr("id")
    

    $(this) 包装a元素,第一个父元素得到td,下一个父元素在click回调中被tr调用。确保ID以字母开头;不允许以数字开头。要删除它,请定义一个变量:

    var row = $(this).parent().parent();
    

    然后您可以在回调中删除它:

    row.delete();
    
        2
  •  0
  •   nxt    15 年前

    正如kgiannakakis指出的,您将需要对单击的元素的引用。 要找出哪里出了问题,请考虑下面的代码行:

    $('a.readMore').click(function(){
      var url = $('a.readMore').attr('href');
      ...
      return  false;
    });
    

    这里您要做的是向具有readmore类的所有元素添加一个事件处理程序。 单击链接后,再次选择具有readmore类的所有a元素,并从第一个匹配的元素中检索href属性。 您要做的是从单击的元素中获取属性。

    $('a.readMore').click(function(){
      var url = $(this).attr('href');
      ...
      return  false;
    });
    

    同样的问题也发生在Ajax请求的成功和完整处理程序中,请注意,在成功/完整处理程序中不能使用这个问题,因为它可能指向另一个对象,因此在调用Ajax函数之前需要将其存储在var中。