التعامل مع أحداث جافا سكريبت ينطبق فقط على محتوى معين

StackOverflow https://stackoverflow.com/questions/608331

سؤال

أواجه مشكلة في فهم ما يجب أن أفعله من الناحية النظرية أثناء محاولتي إنشاء أول تطبيق ويب كبير الحجم لجافا سكريبت.

اعتمادًا على علامة التبويب التي اختارها المستخدم، أقوم بعرض محتوى مختلف داخل الحاوية.المحتوى هو أكثر من مجرد نص ويستخدم وظائف وأحداث جافا سكريبت مختلفة.أنا أستخدم ياهو!تنفيذ "TabView" الخاص بمكتبة واجهة المستخدم، ولكن الطريقة التي يجب أن يتم بها التعامل مع هذه المشكلة قد تنطبق على أساليب Tab الأخرى.

ما كنت أفكر في القيام به هو في الأساس ما يلي:

قم بإنشاء وحدات منفصلة لكل علامة تبويب (على سبيل المثال.MYAPP.modules.tabCalendar و MYAPP.modules.tabJournal).عندما ينقر المستخدم على علامة تبويب مختلفة (أو ينتقل باستخدام أزرار المتصفح إلى حالة علامة تبويب سابقة)، يمكنني الاتصال بـ MYAPP.modules[oldModule].disable() وMYAPP.modules[newModules].enable().ستقوم هذه الوظائف بالاشتراك أو إلغاء الاشتراك في أحداثها المخصصة (على سبيل المثال، معالج النقر العام المرفق بالحاوية).

قد يكون الأسلوب البديل للتعامل مع الأحداث هو الحصول على معالج نقرة عام واحد.إذا كانت النقرة داخل الحاوية، فحدد علامة التبويب المحددة حاليًا وأرسل حدث النقر إلى MYAPP.modules[currentTab].onClick().

أو يمكن لمعالج النقر العام إطلاق حدث مخصص اشتركت فيه الوحدات منذ تحميل الصفحة، وسيتم تشغيل أحداث onClick الخاصة بكل وحدة وتحديد ما إذا كان ينبغي عليها فعل أي شيء أم لا.

يبدو أن هناك الكثير من الخيارات، ولكنني أواجه مشكلة في العثور على الموارد التي تتحدث عن أفضل الطرق للقيام بأشياء مثل هذه.هل أنا على الطريق الصحيح؟كيف يجب التعامل مع هذا؟

هل كانت مفيدة؟

المحلول

استخدم الأحداث المضمنة بالفعل في TabView لوضع JS في قائمة الانتظار للقيام بالأشياء.

http://developer.yahoo.com/yui/tabview/#handlingevents

بالنسبة لتغييرات علامات التبويب، سيتم إخبارك بعلامات التبويب السابقة/التالية المحددة والتي يجب أن تكون أكثر من كافية لـ JS الخاص بك لمعرفة ما يجب أن يفعله.إذا كنت تريد كتابة طبقة ترجمة تنظر إلى الأحداث وتفعل شيئًا بناءً عليها، فهذا جيد ولكنه ليس ضروريًا تمامًا.

نصائح أخرى

أنا غامض بعض الشيء بشأن المشكلة.

  1. نعم، يجب عليك نموذجية التعليمات البرمجية الخاصة بك.
  2. اجعل معالجات أحداث إعداد كل وحدة نمطية على العناصر الموجودة في الحاوية الخاصة بها.

هذا كل شيء.يتعامل YUI TabView مع تبديل علامات التبويب بحيث لا تحتاج إلى تمكين/تعطيل أي شيء.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top