我正在用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;
});
答案 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函数。