我从PHP while循环输出这个表单:
echo '<div id="postCont" class="postCont'.$pid.'" style="block;">
<div id="clLink">
<a id="clLink" href="'.$plink.'" target="_blank"" title="'.$ptitle.'">'.$ptitle.'</a>
</div>
<div id="clDate">Posted on '.$pdate.'</div>
<div id="clDesc">'.$pdesc.'</div>
<form method="post" class="ibadForm">
<input type="hidden" name="id" value="'.$pid.'">
<input type="hidden" name="hiddenBad" value="yes">
<input type="image" src="../img/bad.png" name="subBad" value="Bad" class="bad">
</form>
</div>';
我尝试在使用jquery点击.postCont
时删除单个ibadForm
。
$(".ibadForm").submit(function(e) {
var url = "add_form.php";
var id = <?php echo $pid?>;
$.ajax({
type: "POST",
url: url,
data: $(this).serialize(),
success: function(data)
{
$('.postCont' + id).hide();
}
});
e.preventDefault();
});
它将表单提交到add_form.php
,但不会隐藏postCont
。如果我从班级中删除了ID,那么它会隐藏所有帖子。谁能告诉我哪里出错了?
答案 0 :(得分:1)
您可以使用closest()
获取父div
,然后使用hide()
方法隐藏它:
$(".ibadForm").submit(function(e) {
var url = "add_form.php";
var id = <?php echo $pid?>;
var _this = $(this);
$.ajax({
type: "POST",
url: url,
data: $(this).serialize(),
success: function(data)
{
_this.closest('.postCont').hide();
}
});
e.preventDefault();
});
注意:您应该将$(this)
对象存储在某个变量(我的示例中为form
)中引用所点击的_this
,然后在自回调内$(this)
以来成功回调并不仅仅涉及表格,例如:
_this.closest('.postCont').hide();
希望这有帮助。