2010-06-22 16 views
5

Ho una pagina web con un pulsante inserito all'interno di un div. Quello che voglio ottenere è quando gli utenti fanno clic sul div, farebbe scattare il pulsante all'interno cliccato. Il codice è qualcosa di simile:Jquery - loop infinito

<div id='main'>  
<input id="button" type="button" onclick="javascript:dosomething();" value="submit" /> 
</div> 


<script type="text/javascript"> 
    $(function(){ 
    $('#main').bind('click', function(){ 
     $('#button').trigger('click'); 
    }) 
    }) 
</script> 

Quando viene eseguito (cliccare sul div), si getterebbe javascript errore "troppo ricorsione". Ha senso perché il suo ciclo infinito c'è ma non sono sicuro di quale sia il modo giusto per ottenere questa azione? (per favore non chiedermi perché lo voglio in questo modo, non è il mio codice!)

grazie per il vostro aiuto gentile!

risposta

7

Arrestare event bubbling all'interno del gestore eventi del clic sul pulsante.

Usa e.stopPropagation()

Se si sta utilizzando jQuery poi fare tutti i gestori di eventi in modo jQuery. Così il tasto di scatto sarà

$('#button').click(function(e){ 
    doSomething(); 
    e.stopPropagation(); 
}); 

Quindi il tutto sarà

$(function(){ 
    $('#main').bind('click', function(){ 
     $('#button').trigger('click'); 
    }); 

    $('#button').click(function(e){ 
     doSomething(); 
     e.stopPropagation(); 
    }); 

}); 
+0

Che fa il trucco. Grazie! – BeCool

0
$("#main").on('click', function (e) { 
    e.stopPropagation(); 
    $("#button")[0].click(); 
}); 

Il suo lavoro per me