Javascript 在jQuery AJAX回调中使用$(this)
我一直在寻找解决方案,但似乎没有一个有效 我似乎无法理解这个问题。我在Javascript 在jQuery AJAX回调中使用$(this),javascript,jquery,ajax,Javascript,Jquery,Ajax,我一直在寻找解决方案,但似乎没有一个有效 我似乎无法理解这个问题。我在中有一个按钮,单击该按钮时,我想进行AJAX调用以更新数据库,在AJAX调用成功后,我想更新的类以将按钮标记为已单击 我试过var=this。我在回调中尝试了context:this, function setScoreA(event,candidate,rubric,category,score){ var author = document.getElementById("autho
中有一个按钮,单击该按钮时,我想进行AJAX调用以更新数据库,在AJAX调用成功后,我想更新
的类以将按钮标记为已单击
我试过var=this函数中的代码>。我在回调中尝试了context:this,
function setScoreA(event,candidate,rubric,category,score){
var author = document.getElementById("author").value;
if(author != ""){
$.ajax({
context: this,
type: "POST",
url: "stressBoardUpdate.php",
data: "candidate="+candidate+"&category="+category+"&score="+score+"&author="+author,
success: function(){
$(that).parent('td').siblings().removeClass('isScore');
$(that).parent('td').addClass('isScore');
}
});
}else{
alert("Author must contain something...");
}
}
下面是调用函数的方式
<input type="button" "="" value="5" onclick="setScoreA('Stress Board','Y235','Stress Board Rubric','Handled Stress','5');">
onclick=“setScoreA
不会将设置为单击的元素,而是设置为窗口。您使用它的方式。您使用它的方式,我不确定您是否能够实际获得对元素的引用。您应该绑定事件侦听器,而不是使用onclick
(无论如何,您都可以使用jQuery执行此操作):
如果出于某种原因,您真的想坚持使用此
,您可以使用:
setScoreA.call(this, 'Stress Board' ...
首先,在代码中使用数据属性,并设置一个公共侦听器
HTML:
<input type="button" class=".button-group" data-event="Stress Board" data-candidate="Y235" data-rubric="Stress Board Rubric" data-category="Handled Stress" data-score="5">
$(".button-group").click(function() {
// Do something
});
另外,我假设您正在动态生成许多按钮。上面的代码可以改进,因为整个表只有一个单击侦听器,而不是为每个项目设置一个单击侦听器
$("#wrapper").on("click", "input", function() {
var event = $(this).data("event");
var candidate = $(this).data("candidate");
var rubric = $(this).data("rubric");
var category = $(this).data("category");
var score = $(this).data("score");
setScoreA(this, event, candidate, rubric, category, score);
});
资源:
<input type="button" class=".button-group" data-event="Stress Board" data-candidate="Y235" data-rubric="Stress Board Rubric" data-category="Handled Stress" data-score="5">
$(".button-group").click(function() {
// Do something
});
这个var=this
在哪里?这个函数是如何调用的?为点击发布事件处理程序。在以前的尝试中:P它以前在var作者之前…
另外,为什么要使用本机JavaScript按ID进行选择?jQuery的优势在于选择元素有多容易。$(“\35; ID”)
。您应该能够这样做…var that=$(this);
然后在您的ajax调用中:that.parent('td')…
这里的问题是,您调用setcorea()
的方式可能没有按照您的意愿设置this
值。请向我们展示如何调用setcorea()
。