这是我的代码的一部分
$('.profile-survey-link').on("click",function(e){
e.preventDefault();
var clickado = $(this);
var options = {
endpoint: 'usuario/completado',
method: 'get',
data: {},
success: function(response){
if(response == "100.00"){
clickado.click();
console.log('completo');
}
else{
console.log('no completo');
}
},
error: function(){
console.log('error');
},
complete: null,
};
Ajax.request(options);
});
ajax调用正在运行,因为显示了日志,但未触发click事件。
答案 0 :(得分:1)
而不是使用this
传递ID或正确的对象,如:
$( "#foo" ).trigger( "click" );
答案 1 :(得分:1)
您需要在ajax调用之外的变量中引用this
,以便您可以使用此变量触发与this
范围相关的点击。如下所示:
var _this = this;
$.ajax({
success: function(response){
if(response == "100.00"){
$(_this).trigger('click');
console.log('completo');
}
else{
console.log('no completo');
}
});
答案 2 :(得分:0)
在JavaScript中,this
指向当前函数。 jQuery需要一个元素,因此$(this)
无效。
我假设您正试图点击按钮,对吧?在这种情况下,有两种解决方案:
解决方案1
这样可行,但不要使用它。
为您的按钮添加ID并转而参考。所以你可以:
<button id="myButton">Click here</button>
和
$('#myButton').trigger('click');
解决方案2
调用您在按钮的onclick
和success
处理程序之间共享的功能。例如:
<button id="myButton" onclick="buttonClick()">Click here</button>
将其添加为buttonClick:
function buttonClick() {
doSomething();
}
然后,将您的$(this).trigger('click')
替换为:
doSomething();
我说你不应该使用解决方案1有几个原因:
doCalculation
或storeInfo
或navigateTo
或任何适用的函数。这样可以在几个月后更容易理解代码。