2013-03-29 14 views
11

Ho cercato di verificare se esiste una classe all'interno di un div. Ma è sempre traduce una lunghezza 0. Ecco il mio codice: -.Jquery- Controllare se la classe esiste all'interno di un Div

<div id="accordion2" class="accordion" > 
    <div class="accordion-group"> 
    <div class="accordion-heading"> <a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion2" href="#collapseOne"> 
     <div class="align-nav arrow-active">OSTOMY PRODUCTS</div></a> 
    </div> 
    <div id="collapseOne" class="accordion-body in collapse"> 
     <div class="accordion-inner"> 
      <ul> 
       <li><a href="#">Professional Resources</a></li> 
       <li><a href="#">One-piece Pouching</a></li> 
      </ul> 
     </div> 
    </div> 
    </div> 
    <div class="accordion-group"> 
    <div class="accordion-heading"> <a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion2" href="#collapseTwo"> 
     <div class="align-nav arrow-inactive">LEARNING CENTER</div> 
    </a> </div> 
    <div id="collapseTwo" class="accordion-body collapse"> 
     <div class="accordion-inner"> 
      <ul> 
       <li><a href="#">Videos</a></li> 
       <li><a href="#">Before Your Surgery</a></li> 
      </ul> 
     </div> 
    </div> 
    </div> 
    <div class="accordion-group"> 
    <div class="accordion-heading"> <a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion2" href="#collapseThree"> 
     <div class="align-nav">PROFESSIONAL RESOURCES </div> 
    </a> </div> 
    </div> 
    <div class="accordion-group"> 
    <div class="accordion-heading"> <a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion2" href="#collapseThree"> 
      <div class="align-nav">PROFESSIONAL RESOURCES </div> 
    </a> </div> 
    </div> 
</div> 

per i primi 2 div $ (this) .find ('accordion-body') lunghezza deve essere 1. Ma mostrano ancora 0. il mio codice jQuery è la seguente: -

$('.accordion-heading').click(function() { 
      if($(this).find('accordion-body').exist()) { 
       alert('hi'); 
       if($(this).find('.collapsed').length > 0) { 
        alert('hi'); 
        //$(this).find('.accordion-toggle .align-nav').removeClass('arrow-active').addClass('arrow-inactive'); 
       } 
       else { 
        alert('hi'); 
        //$(this).find('.accordion-toggle .align-nav').removeClass('arrow-inactive').addClass('arrow-active'); 
       } 
      } 
     }); 

ho bisogno di ottenere il $ (this) .find ('accordion-body') di lunghezza = 1;. Si prega di fornire soluzioni.

+0

Si prega di citare che 'jQuery version' si utilizza – diEcho

risposta

28

è necessario selezionare un selettore di classe nel find dal Voi cercate di classe .. e dal fisarmonica corpo è genitori descensent utilizzare parent()

provare questo

$(this).parent().find('.accordion-body').length == 1; 

oppure è possibile utilizzare hasClass()

1

Questo sarebbe '.accordion-body' (il periodo è vitale, è il selettore di classe).

Anche .exist() non è un metodo jQuery, ma presumo che tu l'abbia definito da qualche parte.

0

Prova questo:

Si dovrebbe trovare per i fratelli non i bambini, perché utilizzare .accordion-body non è un figlio di .accordion-heading invece è un fratello.

$('.accordion-heading').click(function() { 
     if($(this).siblings('.accordion-body').length > 0) { 
      alert('hi'); 
      if($(this).siblings('.collapsed').length > 0) { 
       alert('hi'); 
       //$(this).find('.accordion-toggle .align-nav').removeClass('arrow-active').addClass('arrow-inactive'); 
      } 
      else { 
       alert('hi'); 
       //$(this).find('.accordion-toggle .align-nav').removeClass('arrow-inactive').addClass('arrow-active'); 
      } 
     } 
    }); 

problemi erano nel codice:

  1. .exist() non è un valido metodo per controllare qualsiasi elemento
  2. $(this).find() questo trova i bambini non fratelli allo stesso livello
0

sei attraversando nel contesto sbagliato. Da provare anche con le più recenti jQuery e .on metodo

$('#accordion2').on('click','.accordion-heading', function() { 
     var accordionBodyLength = $(this).parent(); 
     var $accordBody = $('.accordion-body'); 
     alert(accordionBodyLength.find($accordBody).length); 
    }); 

Working DEMO

Problemi correlati