这是我的JSP文件的一部分,我遇到了问题:
<div class="aimerSection">
<div class="aime">
<form>
<input type="hidden" class="adore1" name="aime" value="${post.id}">
<input type="button" class="adore2" value="J'aime">
</form>
</div>
<c:if test="${ post.adore == 0 || post.adore == 1 }">
<div class="nbreAimes"><p><span class="nbrAdore">${ post.adore }</span> personne aime ça</p></div>
</c:if>
<c:if test="${ post.adore != 0 && post.adore != 1 }">
<div class="nbreAimes"><p><span class="nbrAdore">${ post.adore }</span> personnes aiment ça</p></div>
</c:if>
</div>
这是我的jQuery文件:
$(document).ready(function(){
$(".adore2").click(function(){
var aime = $(this).parent().find(".adore1").val()
var value = $(this).parent().parent().siblings().find(".nbrAdore").text()
alert(value)
$.ajax({
type:"POST",
data: {aime:aime},
url:"acceuilServlet",
success:function(result){
alert(result)
// this is the line where i am having a problem
$(this).parent().parent().siblings().find(".nbrAdore").html(result)
}
})
})
})
现在我想要实现的是当我用类&#34; adore2&#34;点击我的输入(按钮)时,喜欢的数量(与班级#34; nbrAdore&#34;的跨度)有在我的数据库中增加。
我使用警报来查看是否一切都很好,就像任何打手一样,我将通过一个例子来解释。
如果喜欢的数量是14,我的值(var值)很好,我得到它,我的警报显示14,我的警报(结果)显示15,这意味着我的控制器中的治疗已正确完成,但我在我看来,我不能看到这个,我相信我的问题就在这里,我不知道如何解决它:
$(this).parent().parent().siblings().find(".nbrAdore").html(result)
答案 0 :(得分:1)
这是因为streamsize
是元素的集合。如果适用的话,很难说明应用哪个元素.siblings()
。
那么如何消除这种不确定性并尝试立即从.find()
找到目标元素?
.aimerSection
<小时/> 的修改
好像您的$(this).closest(".aimerSection").find(".nbrAdore").html(result);
不是.nbrAdore
的孩子。
在代码检查器中查找确实位于的位置。
答案 1 :(得分:0)
ajax调用中this
的上下文正在发生变化。它更改为ajax调用的jqXHR
。您可以先将$(this)
保存到变量中,然后在回调中使用该变量:
var self = $(this);
$.ajax({
type:"POST",
data: {aime:aime},
url:"acceuilServlet",
success:function(result){
alert(result)
// this is the line where i am having a problem
self.parent().parent().siblings().find(".nbrAdore").html(result)
}
})
但更好的方法是保存elem本身,因为你使用它两次:
var elem = $(this).parent().parent().siblings().find(".nbrAdore");
var value = elem.text();
....
success: function(result) {
alert(result);
elem.html(result);
}