MISE À JOUR: il manquait un ) et j'ai indiqué l'emplacement dans les commentaires ci-dessous

J'ai une page avec un seul bouton avec l'identifiant #createButton et plusieurs boutons avec la classe .testButton.

J'ai un gestionnaire de clics pour #createButton et un autre gestionnaire de clics pour .testButton.

Pour une raison quelconque, lorsque j'ajoute un bloc de code à mon gestionnaire de clics pour #createButton, le gestionnaire de clics pour .testButton cesse de fonctionner. J'ai indiqué le bloc de code spécifique avec des commentaires ci-dessous.

Pourquoi le gestionnaire de clics pour un bouton cesse-t-il de fonctionner en raison de changements dans le gestionnaire de clics pour un autre type de bouton, s'il vous plaît?

$(document).on('click','#createButton',function(e){

    if(invalidated == 0 && filledEmbeds > 0){           

        //this code block is causing the problem
        $('.embedContainer').each(function(i, obj) {

        } //Update I was missing a closing paranthesis ) here.

        //some code

    }

    e.preventDefault();
});


$(document).on('click','.testButton',function(e){

        //some code

        e.preventDefault();
});

Mise à jour: ajout de HTML ci-dessous:

<div id='embedContainer1' class='embedContainer'>
<textarea name='textareaName[]' id='textareaEmbed1' class='textareaEmbed'></textarea >
</div>
<button class='button testButton' id='testButton1'>Test code</button>


<div class='row item'>
<input type="submit" class="button" value="Create" id="createButton">
</div>
1
thanks_in_advance 23 déc. 2015 à 11:19

2 réponses

Meilleure réponse

Vous avez manqué la fermeture ); après l'opération "chaque". Je viens d'ajouter une alerte pour m'assurer que ces gestionnaires sont activés

$(document).on('click','#createButton',function(e){
        alert("A");
    if(invalidated == 0 && filledEmbeds > 0){           

        //this code block is causing the problem
        $('.embedContainer').each(function(i, obj) {

        });

        //some code

    }

    e.preventDefault();
});


$(document).on('click','.testButton',function(e){
                alert("B");
        //some code

        e.preventDefault();
});

Ajout de violon

1
ItayB 23 déc. 2015 à 08:35

Je dirais que vous devriez utiliser le sélecteur standard et ajouter des rappels onClick.

$('#id').on('click', function(){});

Cette façon de faire comme ceci:

$(document).on('click','.testButton',function(e){});

Vous liez à l'élément document. Lorsque vous l'enregistrez à nouveau, il remplacera simplement le premier gestionnaire d'événements sur l'élément document.

-1
victor 23 déc. 2015 à 08:32