PDA

View Full Version : مشکل با دستور ajaxStart



hamedarian2009
چهارشنبه 30 بهمن 1392, 17:41 عصر
سلام من وقتی این دستورو استفاده می کنم اگه سلکتورم به داکیومنت باشه درست کار می کنه اما با id یا کلاس یک div کار نمی کنه


$('div.msg').ajaxStart(function(){
$('img').show();
});

ولی اینطوری جواب میده اما این مشکلی که داره اینه که من تو صفحه چندجا از اجکس استفاده کردم و این دستور همه اون عکسای loading رو نشون میده


$(document).ajaxStart(function(){
$('img').show();

به نظرتون باید چیکار کنم؟

jalil_gh
جمعه 02 اسفند 1392, 10:49 صبح
ajaxStart و ajaxEnd فقط در سطح document عمل می‌کنه و به طور پیشفرض تو همه‌ی درخواست‌های ajax فراخوانی میشه.
اگه میخایید که تو یه درخواست ajax فراخوانی نشه، تو پراپرتی‌هایی که برای ajax تعریف می‌کنید، مقدار global رو false بزارید.
مثلا:
$.ajax({
// ....
global: false, // don't call the global event listeners
// .....
});

geeking
جمعه 02 اسفند 1392, 15:23 عصر
در ادامه توضیح دوستمون توی Ajax Events دو دسته Event‌ وجود دارد :

Global Event
Local Event

وقتی یک درخواست ajax ایجاد میشود تعدادی از این eventها میتونند در صفحه مون اتفاق بیفتند که من اینجا لیست کاملشون رو مییارم :‌

ajaxStart (Global Event)
ajaxSend (Global Event)
ajaxSuccess (Global Event)
ajaxError (Global Event)
ajaxComplete (Global Event)
ajaxStop (Global Event)
beforeSend (Local Event)
success (Local Event)
error (Local Event)
complete (Local Event)


و برای استفاده بعد از اینکه خاصیت global: false‌ رو همونطور در بالا اشاره کردند را اعمال کردیم میتونیم استفاده کنیم :
Local Events


$.ajax({
beforeSend: function(){
// Handle the beforeSend event
},
complete: function(){
// Handle the complete event
}
// ......
});


Global Events


$("#loading").bind("ajaxSend", function(){
$(this).show();
}).bind("ajaxComplete", function(){
$(this).hide();
});