我有一个小错字,一切都像它应该的那样。
我无法弄清楚如何将多个ajax调用中作为函数参数传递的变量用作选择器。
第一个和第二个都可以,但是当调用ThirdCallbackFunction时,单击'“#button-”+ id_number'不会触发任何内容,尽管alert(“#button-”+ id_number)显示正确的元素#button-0 #button-1 ... etc
$(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>');
}
});
});
}
答案 0 :(得分:0)
我不太明白你的问题,但如果你想使用任何变量,对象或任何可以定义为参数的东西,只需将其包装为数组[Variable]
(如果还没有, )获取该变量将作为参数传递给的函数,并使用apply函数。 func.apply(this, [Variable]);
如果您碰巧知道要传递的变量,可以直接传递它们:
(function() { })(variable1, variable2, /* ect... */);
或使用通话功能:
func.call(this, variable1, variable2);
func
是您正在调用的函数。您也可以将关键字this
替换为任何内容。如果这样做,函数内对this
的任何引用都将引用您提供的值。这就是jQuery等框架允许您通过引用其框架内的this
来访问jQuery对象的方式。