سؤال

لقد قمت بإعداد عدد من الفواصل على صفحة باستخدام البرنامج المساعد jQuery Collion Plugin حتى أتمكن من تطبيق توسيع جميع وانهيار جميع الوظائف.

كل عنصر معرف هو الأكورديون الخاص والعملية أدناه يعمل أدناه لإغلاقها جميعها بغض النظر عن تلك المفتوحة بالفعل:

$("#contact, #address, #email, #sales, #equipment, #notes, #marketingdata")
    .accordion("activate", -1)
;

مشكلتي هي بتوسيع الكل. عندما يكون لدي كل التوسع مع هذا الرمز:

$("#contact, #address, #email, #sales, #equipment, #notes, #marketingdata")
    .accordion("activate", 0)
;

سوف يتعاقد البعض وتوسيع بعضها بناء على ما إذا كانت مفتوحة سابقا أم لا.

فكرتي لتصحيح هذا هو طيهم جميعا ثم قم بتوسيعها جميعا عند النقر فوق "توسيع". ومع ذلك، لن ينفذ هذا الرمز بشكل صحيح:

$("#contact, #address, #email, #sales, #equipment, #notes, #marketingdata")
    .accordion("activate", -1)
;
$("#contact, #address, #email, #sales, #equipment, #notes, #marketingdata")
    .accordion("activate", 0)
; 

سوف تضغط فقط على الأمر الثاني وعدم إغلاقها جميعا أولا. أي اقتراحات؟

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

المحلول

أنا لست متأكدا تماما ما كنت بعد، لكن هذا هو أفضل تخمين. من بين جميع معاملاتك، تريد زر "Open All" لفتح جميع التقسیدات المغلقة (أي أنه لا يظهر أي قسم). سأفعل ذلك باستخدام filter()

$("#contact, #address, #email, #sales, #equipment, #notes, #marketingdata")
    .filter(":not(:has(.selected))")
    .accordion("activate", 0)
;

هل هذا ما كنت عليه؟


تحرير لشرح وظيفة المرشح هذه:

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

في هذه الحالة، يزيل الاستعلام أي شيء لا (:not) يملك (:has) طفل مع الطبقة "المختارة" (.selected). لقد استخدمت .selected محدد هنا لأن هذا ما يضيف الأكورديون إلى اللوحة الحالية المفتوحة حاليا.

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

$(".accord:not(:has(.selected))").accordion("activate", 0);

هذا أكثر قضايا وصيحه، نظرا لأنه يمكنك بسهولة إضافة المزيد من الاتفاقيات في المستقبل إذا كنت ترغب في ذلك وهذا سوف يتعامل معه.

الوثائق للمرشح هنا: http://docs.jquery.com/traversing/filter.

نصائح أخرى

jQuery('#accordion').accordion({        
    active:-1,
});

لقد كان لدي نفس المشكلة وحلها مع بعض الوظائف القصيرة للرمز عند الانهيار أثناء الانهيار أثناء إعداد التركيز على العنصر [0] لذلك يمكن أن يستأنف الملاحة العادية.

http://spstring.jeffthink.com/؟p=49.

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