У меня есть доска объявлений. и вы можете прокомментировать каждое сообщение (бит как faceboook). , если вы нажмете ссылку «комментарий» textarea
, вы можете оставить свой комментарий. , но если вы нажмете «комментарий», затем нажмите «Отмена», чтобы textarea
сместился, а затем снова нажмите комментарий, чтобы он снова отошел назад и оставил комментарий, и он дважды отправит сообщение. поэтому каждый раз, когда комментарий textarea отображается в виде и обратно, он дублирует комментарий. Почему jquery ajax отправляет несколько раз?
$("body").on("click",".new_comment", function(e){ // new comment link
e.preventDefault();
var post = $(this).parents('.message_container').siblings('#post_comment');
clearInterval(refreshBoard); //stop autorefresh
$(post).slideDown(400, function() { //slide textarea down
$(".cancel_comment").on("click", function(e) { //cancel comment
e.preventDefault();
$(post).slideUp(400, function() { //slide textarea back up
$('#comments').load('messages.php'); //reload div
msgRefresh(); //starts autorefresh
});
});
});
//the following posts the comment along with info//
$("body").one("click", '.post_comment_button', function(e){
e.preventDefault();
var anchor = $(this).parents('.update_comment')
.parents('#post_comment').siblings('.comment_list').find('ul:first');
var comment = $(this).parents('.update_comment').children('textarea.post_comment').val();
var user = $(this).parents('.update_comment').children('input.user').val();
var msg_id = $(this).parents('.update_comment').children('input.message_id').val();
if (comment == '') $('#comments').load('messages.php');
else {
$.post('messages.php', {
comment: comment,
message_id: msg_id,
post_comment: 'true' }, function(data) {
//creatse new comment//
$('body').append(data);
var newcomment = "<li><div class='comment_container'>
<div class='date'>less than 1 minute ago</div>
<div class='name'>" + user + " </div>
<div class='info_bar'><div class='edit_comment'>
<a href='#' class='comment_edit'>Edit</a> </div>
<span>|</span><a href='#' class='delete_comment'>Delete</a></div>
<div class='fadeOut_comment'><div class='posted_comment'> " +
nl2br(htmlEntities(comment.trim())) + " </div></div></li>";
$(post).slideUp(400);
$(newcomment).fadeIn(500, function() {
$('#comments').load('messages.php');
}).appendTo(anchor);
});
}
});
});
поэтому мой вопрос, почему это происходит? и как я могу остановить его? если вам нужна дополнительная информация, пожалуйста, спросите. thankyou
эээ спасибо за помощь. Я не так опытен с jquery, как вы можете видеть. Я действительно не понимаю вещи, связанные с qwhole. я сделал то, что ты сказал, и он все еще делает это ????? – dragonvsphoenix
ОК, на самом деле вы были правы. Я взял кнопку комментария для комментариев за пределами .new_comment и ti tseems для работы сейчас. хотя он сломал сумин и вызвал еще одну проблему, но плохо попытался обойти его. спасибо – dragonvsphoenix
@dragonvsphoenix проблема, о которой я говорил, не связана с вашим HTML. Я не думаю, что вам нужно переместить вашу кнопку, просто переместите часть кода, который я цитировал вне этой функции обратного вызова: '$ (" body "). On (" click ",". New_comment ", function (e) {// Это обратный вызов, на который я ссылаюсь} ' –