ورود

View Full Version : مبتدی: اجرای چند باره رویداد



tooka123
جمعه 19 اردیبهشت 1399, 15:48 عصر
سلام

من در لیست اطلاعات برای حذف آیتم ها یک پاپ آپ نوشتم که زمان کلیک روی گزینه حذف, یک تایید از کاربر بگیره و مشکلی در اجرا نداره , ولی وقتی که فیلتر های لیست که همگی با جی کوئری هست مثل جستجو و ... را اجرا کنم و یا اگه به صفحه دیگه برم و بعد حذف را بزنم تابع چند بار اجرا می شود, به تعداد اجرای توابع جی کوئری. راه حل چیست؟

ممنون


با این کد پاپ آپ تایید باز می شه


function delete_popup(msg, cancel_btn_txt, confirm_btn_txt, confirm_btn_class, delete_current_id){
$(this).deletePopUp({
msg : msg,
cancel_btn_txt : cancel_btn_txt,
confirm_btn_txt : confirm_btn_txt,
confirm_btn_class : confirm_btn_class,
delete_current_id : delete_current_id,
});
}


$('.del-edu').on('click', function(e) {
delete_current_id = $(this).attr('id');
delete_popup('<?php echo lang('are_you_sure'); ?>', '<?php echo lang('cancel'); ?>', '<?php echo lang('confirm'); ?>', 'confirm-delete-edu', delete_current_id);
});






وقتی رو گزینه تایید می زنم چند بار اجرا می شه



$('body').on('click', '.confirm-delete-edu', function(e){
e.preventDefault();
var id = $(this).attr('id');
....
run ajax for delete

});

plague
شنبه 20 اردیبهشت 1399, 12:24 عصر
حدس میزنم صفحه بندی یا فیلترت با ایجکس باشه یعنی با کلیک روی صفحه دوم محتوایت صفحه دوم از طریق ایجکس دریافت و جایگزین میشن تو صفحه
از اونجاییکه کد های js/jquery به خود صفحه تزریق میشن , با جایگزین کردن یک تیکه از کدت کد قبلی از بین نمیره بلکه کد جدید هم بهش اضافه میشه در نتیجه 2 بار اجرا خواهد شد (یا حالا به هر تعدادی که جایگزین شده باشه محتوا )
راه حلش اینه که کد های js رو ببری بیرون از اون قسمتی که جایگزین میشه قرار بدی ... یا اینکه توی یک فایل .js بزاری و اون فایل رو ضمیمه کنی تو صفحت

tooka123
چهارشنبه 24 اردیبهشت 1399, 13:23 عصر
بله صفحه بندی و فیلتر ajax هست, اومدم به جای e.preventDefault() کد e.stopImmediatePropagation(); رو گذاشتم درست شد

حالا اگه یه نفر دوبار همزمان روی یک گزینه کلیک کنه دوبار اجرا می شه, اینو چه طور چک کنم تا کاربر یه بار بیشتر نتونه کلیک کنه و اگه چند بار شد فقط یه بار اجرا بشه؟

plague
پنج شنبه 25 اردیبهشت 1399, 15:22 عصر
پروسه اینجوری باشه که وقتی کلیک میشه یه کلاس به دکمه اضافه کن و در پایان عملیات اون کلاس رو حذف کن از دکمه
حالا در ابتدای هر کلیک چک میکنی دکمه اون کلاس رو داره یا نه اگه داشت یعنی یبار قبلش کلیک کرده و در حال انجام عملیاته و ادامه نده