我有一个论坛,人们可以评论其他人的条目,我通过ajax将数据提交到数据库。我有一个名为"total_number"
的div,它包含对特定主题的响应总数。我有一个脚本,在单击提交按钮时,它会在total number
div中的数字上加1。
现在我的问题是,由于主题区域是嵌套的,我发现当点击某一行的按钮时,很难对其进行计数。例如,当我点击第一行的提交按钮时,它会正确相加,但当我点击第二行的下一个按钮时,计数不起作用。因此,我需要找到一个可以弥补嵌套记录的脚本,这样当它的按钮被点击时,它就可以算作一个特定的行。我设法在total_number
div中添加了+1,所以当每个div重复时,它都会添加+1
$(document).ready(function(){
$('.form1').on('submit',function(event){
event.preventDefault();
// Disable submit button on this specific form
$('.button-add', this).text('Submitted').prop('disabled', true);
data = $(this).serialize();
$.ajax({
type: "POST",
url: "insert_comment.php",
data: data
}).success(function() {
window.counter=parseInt($('#total_number').html());
window.counter++;
$('#total_number').html(window.counter);
});
});
});
如果你的注释有一个类,你总是可以计算出其中有多少个对象。
例如:
var count = $(".comment-wrapper").length;
现在,您是否需要添加1,取决于您是在添加新评论之前还是之后添加。考虑到它在success中,我假设它在后面,所以你不需要添加1。
如果每一行都有一个计数器,并且希望每一行独立求和(只有自己行中的注释),那么在成功函数中,找到相关提交按钮前的total_number
元素(使其成为一个类),获取其html,解析并增加一:
$('.btn').click(function() {
$check = $(this).prevAll('.total_number:first');
var counter = parseInt($check.html());
counter++;
$check.html(counter);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="total_number">4</div>
<button class="btn">CLICK ME</button>
<div class="total_number">12</div>
<button class="btn">CLICK ME</button>