Bo'sh jQuery akkordeon panellarini qanday boshqarish mumkin? Akkordeon sarlavhasini bosishni qanday o'chirish mumkin?

Men Accordionn jQuery boshqaruvlaridan foydalanmoqdaman, quyida URL manzilini topishingiz mumkin:

Akkordeon: http://jqueryui.com/accordion/

Muammo: Qanday qilib bo'sh menyularni bosish mumkin emasligini boshqarishimiz mumkin; misol - Agar menda "2-bo'lim" menyusida biron bir element bo'lmasa, uni bosish mumkin emas. Buni qilganimda, u keyingi asosiy menyu elementini oldingisiga o'zgartiradi va buziladi yoki faqat bo'sh <div> qo'ysam, bosish o'rniga bo'sh menyu ochiladi. Kimdir yordam bera oladimi?


person mknayab    schedule 01.04.2013    source manba
comment
Agar sizda menyuda hech narsa bo'lmasa, nega uni bo'sh div ichiga joylashtirish bilan bezovta qilyapsiz?   -  person Jay Mayu    schedule 01.04.2013


Javoblar (2)


Siz http://api.jqueryui.com/accordion/#event-beforeActivate bilan urinib ko'rishingiz mumkin. a>

$( ".selector" ).on( "accordionbeforeactivate", function( event, ui ) {} );

Funktsiyada siz ui.newPanel ni sinab ko'rishingiz mumkin, agar bo'sh bo'lsa, ushbu panelni faollashtirishni bekor qiling.

Men jsfiddle misolini yaratdim: http://jsfiddle.net/npthU/1/

    $( "#accordion" ).on( "accordionbeforeactivate", function( event, ui ) {

       if($.trim($( ui.newPanel ).html()).length == 0)
          event.preventDefault();

    });

Bo'sh divga ega bo'lgan maxsus panelni ochishni o'chirish uchun event.preventDefault(); ishlatiladi.

person freshbm    schedule 01.04.2013
comment
Muammoga tez e'tibor qaratganingiz uchun @freshbm ga rahmat, men juda minnatdorman. Menga imkon qadar tezroq sizga qaytib borishga harakat qilaman. - person mknayab; 01.04.2013
comment
Kechirasiz, @freshbm, ehtimol sizning javobingiz ham to'g'ri edi, lekin afsuski, men tuzata olmayman. Ishonchim komilki, men tushunmaganman, lekin qandaydir tarzda men shunday qildim, iltimos, jsfiddle.net/wru3jni tekshiring. a> Baribir rahmat... - person mknayab; 01.04.2013
comment
Oh, men yana urinib ko'rdim va u ham ishlaydi ... voy, men ikki xil echimga ega bo'ldim :-) Rahmat @freshbm, javobingizni tekshirdim. - person mknayab; 01.04.2013

Mana ushbu kodning yangilanishi:

$('#'+_id).on( "accordionbeforeactivate", function( event, ui ) {
        if((($.trim($(ui.newPanel).html()).length == 0)&&($(ui.oldHeader).length==0))||(($.trim($(ui.newPanel).html()).length == 0)&&($(ui.newHeader).length))){event.preventDefault();});

Endi u yig'ish/yechishga imkon beradi

person Maxime Helen    schedule 13.08.2013