208 votes

Comment déclencher l’événement de modification de jQuery dans le code

J'ai un événement de changement qui fonctionne bien mais j'ai besoin de le répéter.

Donc, j'ai une fonction qui est déclenché sur le changement qui va "changer" d'autres menus déroulants basé sur un sélecteur de classe (avis de "menus déroulants", il pourrait y avoir plus d'un). Ce changement par procuration ne pas déclencher la fonction et donc échoue. Comment puis-je le faire fonctionner?

Un grand merci à tous vous mesdames et messieurs.

Code

$(document).ready(function () {
    var activeDropBox = null;

    $("select.drop-box").change(function () {
        var questionId = $(this).attr("questionId");
        var selectedAnswer = $(this).val();
        activeDropBox = this;

        alert(this.questionId);

        $.ajax(
        {
            type: "POST",
            url: answerChangedActionUrl,
            data: { questionId: questionId, selectedValue: selectedAnswer },
            success: function (data) {
                SetElementVisibility(data.ShowElement, questionId);
            }, error: function (XMLHttpRequest, textStatus, errorThrown) {
                alert('XMLHttpRequest:' + XMLHttpRequest.responseText);
                alert('textStatus:' + textStatus);
                alert('errorThrown:' + errorThrown);
            }
        });
    });

    function SetElementVisibility(visible, questionId) {
        // I would like each child to then trigger the change event...
        $(".childOf" + questionId)[visible ? 'show' : 'hide']('slow');

        // Suggested code
        //$(".childOf" + questionId + " select").trigger("change");

        if (!visible) {
            $(".childOf" + questionId + " select").attr('selectedIndex', 0);
        }
    }
}

Les suggestions semblent fonctionner, mais comme l'événement de changement de déclencheurs de l'ajax post il semble maintenant ne ici. Je vais jouer avec elle, mais c'est quelque chose pour une autre question que je ressens.

462voto

John Hartsock Points 36565

Utilisez la méthode trigger ()

 $(selector).trigger("change");
 

21voto

Frédéric Hamidi Points 123646

La forme sans paramètre de la méthode change () déclenche un événement change . Vous pouvez faire quelque chose comme:

 $(document).ready(function() {
    $("#yourInitialElementID").change(function() {
        // Do something here...
        $(".yourDropDownClass").change();
    });
});
 

0voto

Micharch54 Points 375

Mettez la fonction dans un wrapper et appelez-la simplement sur l'événement onchange.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X