2010-06-22 7 views
5

J'ai une page Web qui a un bouton placé à l'intérieur d'un div. Ce que je veux réaliser, c'est que lorsque les utilisateurs cliquent sur la div, cela déclenchera le clic sur le bouton. Le code est quelque chose comme:Jquery - boucle infinie

<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> 

Une fois exécuté (cliquez sur le div), il jetterait javascript erreur « trop récursion ». Il est logique pourquoi sa boucle infinie là-bas, mais je ne suis pas sûr de savoir quelle est la bonne façon d'accomplir cette action? (plz ne me demande pas pourquoi je le veux de cette façon, ce n'est pas mon code!)

merci pour votre aide!

Répondre

7

Arrêtez event bubbling dans le gestionnaire d'événements de clic de bouton.

Utilisez e.stopPropagation()

Si vous utilisez jquery ensuite faire tous les gestionnaires d'événements de manière jquery. Ainsi, le bouton clic sera

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

Donc, la chose sera

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

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

}); 
+0

qui fait l'affaire. Merci! – BeCool

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

Son travail pour moi