2013-08-13 6 views
5

Sto cercando di mettere a fuoco all'interno di una particolare "sezione" all'interno di un div al clic del mouse. Ho scritto le seguenti righe di codice:Il controllo non rientra in divobject.children(). On ({'mousedown' ...});

$('#my-div-id').children('.my-section-class').on({ 
    'mousedown' : function(e){ 
     var $item = $(this); 
     $item.focus(); 
    }  
}); 

Le sezioni sono aggiunti all'interno di un ciclo for all'interno del div sulla base di alcuni if.

Ci sono cinque sezioni della classe 'my-section-class' all'interno del div e $('#my-div-id').children('.my-section-class').length restituisce 5. Ma il controllo non viene mai nella mia funzione.

Nel codice precedente se ignoro il .children('.my-section-class'), il controllo entra nella mia funzione ogni volta che clicco all'interno del div. Ma voglio focalizzare la sezione particolare e non l'intero div.

Ho provato anche $('#my-div-id').children('.my-section-class').live('click',function(event), ma questo sta dando lo stesso comportamento. Sto ottenendo il controllo all'interno della mia funzione se ho codificato l'ID di una particolare sezione invece di usare la funzione children().

Modifica

il codice HTML viene aggiunto utilizzando un tag <c:forEach> e assomiglia a questo <c:ForEach ...> <section class="my-section-class">...</section> </c:ForEach>

+0

, per favore potete creare un jsFiddle o fornire il markup HTML? Grazie – DevlshOne

+0

gli elementi 'my-section-class' aggiunti dinamicamente –

+0

anche la versione jquery utilizzata –

risposta

1

Prova

$('#my-div-id').on('mousedown', '.my-section-class', function(e) { 
    var $item = $(this); 
    $item.focus(); 
}); 
+0

Con questo funziona. Potresti dirmi perché il mio codice non ha funzionato in questo caso? – Jose

+0

se si ha a che fare con elementi dinamici, è necessario utilizzare la delega degli eventi per registrare i gestori di eventi –

Problemi correlati