更新
我有一个小错字,一切都正常。
我不知道如何在多个 ajax 调用中使用作为函数参数传递的变量作为选择器。
第一和第二都可以,但是当调用 ThirdCallbackFunction 时,单击 '"#button-"+ id_number' 不会触发任何内容,尽管alert("#button-"+ id_number) 显示了正确的元素 #button-0 #button-1 ...等
$(document).ready(function() {
// FIRST
$("#process").click(function(){
var somedata = $("#somedata").val();
$('input[type="text"]').removeClass("error");
$.ajax({
url: 'first.php',
type: "POST",
data: ({somedata: somedata }),
beforeSend:function(){
jQuery('#ajax-panel').html('<div class="loading"><img src="loading.gif" alt="Loading..." /></div>');
},
success: function(data){
$("#ajax-panel").html(data);
SecondCallbackFunction();
},
error:function(){
jQuery('#ajax-panel').html('<p class="error">Oops!</p>');
}
});
});
});
// SECOND
function SecondCallbackFunction(){
$(".load-button").click(function(){
var id = $(this).closest('.box').attr('id');
var arr = id.split('-');
var id_number = arr[1];
alert(id_number); //
$.ajax({
url: 'second.php',
type: "POST",
data: ({id_number: id_number }),
beforeSend:function(){
$("#"+id).find('.load-button').hide();
$("#"+id).append('<div class="loading"><img src="loading.gif" alt="Loading..." /></div>');
},
success: function(data){
$("#"+id).find('.loading').hide();
$("#"+id).append(data);
ThirdCallbackFunction(id_number);
},
error:function(){
$("#"+id).append('<p class="error">Oops!</p>');
}
});
});
}
// THIRD
function ThirdCallbackFunction(id_number){
alert(id_number); // SHOWING 1 , 2 ....etc
$("#button-" + id_number).bind("click", function() { // DOING nothing
var title = $('#title' + id_number).val();
$.ajax({
url: 'third.php',
type: "POST",
data: ({title: title,
}),
beforeSend:function(){
$("#item"+id_number).append('<div class="loading"><img src="loading.gif" alt="Loading..." /></div>');
},
success: function(data){
$("#item"+id_number).find('.loading').hide();
$("#item"+id_number).append(data);
},
error:function(){
$("#"+id).append('<p class="error">Oops!</p>');
}
});
});
}
最佳答案
我不太明白你的问题,但如果你想使用任何变量、对象或任何可以定义为参数的东西,只需将其包装为数组[Variable]
(如果还没有)获取该变量将作为参数传递给的函数,并使用 apply 函数。 func.apply(this, [Variable]);
如果您碰巧知道要传递的变量,则可以简单地正常传递它们:
(function() { })(variable1, variable2, /* ect... */);
或者使用call函数:
func.call(this, variable1, variable2);
其中 func
是您要调用的函数。您还可以将关键字 this
替换为任何内容。如果这样做,函数内对 this
的任何引用都将引用您提供的值。这就是 jQuery 等框架允许您通过引用其框架内的 this
来访问 jQuery 对象的方式。
关于javascript - 如何使用作为函数参数传递的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8453764/