У меня есть эта форма выводится из цикла PHP в то время:
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>';
Я пытаюсь удалить человека .postCont
когда ibadForm
нажимается с помощью jquery.
$(".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
, Если я удаляю идентификатор из класса, он скрывает все сообщения Cont. Может кто-нибудь сказать мне, где я иду не так?
Вы могли бы использовать 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();
Надеюсь это поможет.
Других решений пока нет …