jquery帮助获取表行的Id

时间:2010-02-11 17:21:10

标签: php javascript jquery

我正在用Jquery和PHP做一个AJAX请求我正在做的是循环遍历一个数组并生成一个表,每个循环创建一个新的并给它一个id,当他们点击read me链接ajax还有一些内容被返回,点击阅读更多我希望从表中删除关联的表行是可能的,你可以看到我到目前为止的尝试。

<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 个答案:

答案 0 :(得分:4)

您可以像这样获取行的ID:

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

$(this)包装a元素,第一个父元素获取td,下一个元素获取tr。在单击回调中调用此方法。确保id以字母开头;不允许开始一个号码。要删除它,请定义一个变量:

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

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

row.delete();

答案 1 :(得分:0)

正如kgiannakakis指出的那样,你需要一个被点击元素的引用。 要找出问题所在,请考虑以下代码行:

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

你在这里做的是使用readMore类为所有元素添加一个事件处理程序。 单击链接时,再次选择具有readMore类的所有元素,并从第一个匹配的元素中检索href属性。 你想要做的是从被点击的元素中获取属性。

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

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