코드에서 jQuery 변경 이벤트를 트리거하는 방법


177

나는 잘 작동하는 변경 이벤트가 있지만 재발해야합니다.

따라서 클래스 선택기를 기반으로 다른 드롭 다운을 "변경"하는 변경에 대해 트리거되는 기능이 있습니다 ( "drop downS"에 유의하십시오. 둘 이상이있을 수 있음). 이 프록시 변경은 기능을 트리거하지 않으므로 실패합니다. 작동 시키려면 어떻게해야합니까?

암호

$(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);
        }
    }
}

지금까지 제안은 효과가있는 것처럼 보이지만 변경 이벤트가 아약스 게시물을 트리거하면 이제 실패합니다. 나는 그것을 가지고 놀려고하지만 그것은 내가 느끼는 또 다른 질문에 대한 것입니다.


1
우리가 볼 수 있도록 몇 가지 코드를 제공
Alex Rashkov

당신이 우리에게 그것이 무엇인지 보여주지 않았을 때 어떻게 작동시키는 지 어떻게 알 수 있습니까?
user113716

1
나는 그것이 단순한 개념이라고 생각했고 코드가 필요하다고 느끼지 않았다. 지금까지의 대답은 내 설명을 이해 한 것으로 보이므로 지금 해결책을 찾고 있습니다. 기쁨이 없다면 코드를 게시 할 것입니다. 내 구현은 실제로 훨씬 더 복잡합니다.
4imble

1
그것을 정렬하면 아약스 게시물 후 값을 변경하는 데 문제가있었습니다. 도움을 주셔서 감사합니다. 게시 된 제안은 매력처럼 작동했습니다.
4imble

답변:


391

사용 트리거 () 메소드를

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

4
이것에 대한 이점이 change()있습니까? 아니면 그냥 선호입니까?
Joshua Pinter

6
@JoshPinter 더 큰 혜택, 더 선호하지 않습니다. 그러나 메서드 이름보다 매개 변수로 추상화하는 것이 훨씬 쉽습니다.
John Hartsock

실제로 변경 이벤트를 트리거하기 전에 값을 설정하는 것이 가장 좋습니다!
Kapil Yadav


20

change () 메소드 의 매개 변수없는 형식은 change이벤트를 트리거합니다 . 다음과 같이 쓸 수 있습니다.

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


8

그것을 사용하십시오 :

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

또는

$('#id').trigger("click");

또는

$('.class').trigger(event);

트리거는 자바 스크립트가 지원하는 모든 이벤트 일 수 있습니다. 모든 사용자가 이해하기 쉽기를 바랍니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.