jQuery Load() من داخل رد اتصال ajaxComplete() مما يتسبب في تحميلات متعددة
-
07-07-2019 - |
سؤال
لقد كنت أحدق في هذا لفترة من الوقت وأنا في حيرة من أمري تمامًا.ستحتاج إلى برنامج firebug لهذا الغرض، قم بإلقاء نظرة على طلبات AJAX.يبدو أنها تتضاعف بعد كل نقرة على الزر التالي والسابق، حتى يصبح التحميل بطيئًا للغاية:
http://www.ftsdev.com/freegreen/virtual-tour-prototype/virtual-tour.html
كل مصدر JavaScript لهذا موجود في:
/freegreen/virtual-tour-prototype/js/virtual-tour.js
وظائف للنظر فيها:
launchVirtualTour()
$('#vt-next').one('click',function()
$('#vt-prev').one('click',function()
عندما يتم استدعاء ajaxComplete() أتحقق من الملف الذي تم تحميله مقابل مصفوفة خارج وظيفة رد الاتصال.يتيح لي هذا تحديد ما إذا كان هذا هو العنصر الأول أو الأخير في السلسلة أم لا حتى أتمكن من إخفاء الأزرار السابقة أو التالية وفقًا لذلك.لدي شعور بأن المشاكل تكمن في مكان ما في السطور 80-82 حيث أقوم بإضافة 1 إلى قيمة inArray() المخزنة في IndexInArray.
لقد بحثت ولكن لم أتمكن من العثور على أي مواقف مماثلة هناك، أي مساعدة موضع تقدير كبير.
شكرًا!
المحلول
لقد حاولت لفترة وجيزة الخروج من الصفحة.من خلال نظرة سريعة على الكود ورد فعلي، يبدو أنك لم تقم بإلغاء ربط أحداث النقر المرتبطة سابقًا.بقدر ما أستطيع أن أقول أن هذا هو التدفق إلى الخطأ الخاص بك:
- ينقر المستخدم لإظهار عرض الشرائح
- يمكنك ربط أحداث النقر التالية/السابقة
- ينقر المستخدم حوله باستخدام الأزرار التالية/السابقة
- يقوم المستخدم بالنقر للخروج من عرض الشرائح الحالي
- ينقر المستخدم على عرض شرائح آخر
- يمكنك ربط أحداث النقر التالية/السابقة
- ينقر المستخدم حوله، باستخدام الأزرار التالية/السابقة، مما يؤدي إلى استدعاء المحتوى مرتين
تحتاج إلى إلغاء ربط أحداث النقر عندما يقوم المستخدم بالنقر خارج عرض الشرائح الأول.أو لا تربط في الخطوة 6.