복붙노트

[JQUERY] 내가 값을 설정할 때 왜 JQuery와 변경 이벤트가 트리거하지 않는 발을 사용하여 선택 ()?

JQUERY

내가 값을 설정할 때 왜 JQuery와 변경 이벤트가 트리거하지 않는 발을 사용하여 선택 ()?

해결법


  1. 1.변경 이벤트는 사용자가 대신 자바 스크립트 코드를 통해 시작 실제 브라우저 이벤트가 필요하기 때문에.

    변경 이벤트는 사용자가 대신 자바 스크립트 코드를 통해 시작 실제 브라우저 이벤트가 필요하기 때문에.

    대신이 작업을 수행합니다 :

    $("#single").val("Single2").trigger('change');
    

    또는

    $("#single").val("Single2").change();
    

  2. 2.난 당신이 수동으로 트리거 ()로 변경 이벤트를 트리거 할 수 있다고 생각합니다 :

    난 당신이 수동으로 트리거 ()로 변경 이벤트를 트리거 할 수 있다고 생각합니다 :

    $("#single").val("Single2").trigger('change');
    

    자동으로 실행되지 않는 이유지만, 난 아무 생각이 없습니다.


  3. 3.발 () 이후에이 코드 조각을 추가하면 작동하는 것 같다 :

    발 () 이후에이 코드 조각을 추가하면 작동하는 것 같다 :

    $(":input#single").trigger('change');
    

  4. 4.지금까지 내가 API의에서 읽을 수있다. 사용자가 옵션을 클릭 할 때 이벤트는 발생합니다.

    지금까지 내가 API의에서 읽을 수있다. 사용자가 옵션을 클릭 할 때 이벤트는 발생합니다.

    http://api.jquery.com/change/


  5. 5.당신이 원하는 경우에 지금까지보다 쉽게 ​​사용자 정의 기능을 추가하고 전화를 만들려면 그 값을 변경 또한 트리거 변경

    당신이 원하는 경우에 지금까지보다 쉽게 ​​사용자 정의 기능을 추가하고 전화를 만들려면 그 값을 변경 또한 트리거 변경

    $.fn.valAndTrigger = function (element) {
        return $(this).val(element).trigger('change');
    }
    

    $("#sample").valAndTirgger("NewValue");
    

    발 호출 할 때 또는 당신은 항상 변화를 호출하기 위해 발 기능을 대체 할 수 있습니다

    (function ($) {
        var originalVal = $.fn.val;
        $.fn.val = function (value) {
            this.trigger("change");
            return originalVal.call(this, value);
        };
    })(jQuery);
    

    http://jsfiddle.net/r60bfkub/에서 샘플


  6. 6.경우에 당신은 당신이 당신의 사용자 정의 이벤트를 제공 할 수있는 기본 변경 이벤트와 섞어 싶지 않아

    경우에 당신은 당신이 당신의 사용자 정의 이벤트를 제공 할 수있는 기본 변경 이벤트와 섞어 싶지 않아

    $('input.test').on('value_changed', function(e){
        console.log('value changed to '+$(this).val());
    });
    

    값 세트에서 이벤트를 트리거하기 위해, 당신은 할 수있다

    $('input.test').val('I am a new value').trigger('value_changed');
    

  7. 7.나는 워드 프레스와 너 (CMB2)를 사용하는 동안 같은 문제로 실행하고 파일 업로드 METABOX의 변경 이벤트에 후크 싶었다.

    나는 워드 프레스와 너 (CMB2)를 사용하는 동안 같은 문제로 실행하고 파일 업로드 METABOX의 변경 이벤트에 후크 싶었다.

    그래서 경우에 당신은, (이 경우에는 너 (CMB2) 스크립트를) 변경을 호출하는 코드를 수정하여 아래의 코드를 사용할 수 아니에요. 값이 설정 한 후 트리거 그렇지 않으면 변경 이벤트 핸들러가 작동, 호출되고, 값은 이전이 아닌 하나되는 설정됩니다.

    여기에 코드를 내가 사용이다 :

    (function ($) {
        var originalVal = $.fn.val;
        $.fn.val = function (value) {
            if (arguments.length >= 1) {
                // setter invoked, do processing
                return originalVal.call(this, value).trigger('change');
            }
            //getter invoked do processing
            return originalVal.call(this);
        };
    })(jQuery);
    

  8. 8.당신은 단지 형태로 선택 옵션을 추가 한 당신은 변경 이벤트를 트리거하려면, I는의 setTimeout 달리 jQuery를 새로 추가 선택 상자를 선택하지 않습니다 필요합니다 발견했습니다 :

    당신은 단지 형태로 선택 옵션을 추가 한 당신은 변경 이벤트를 트리거하려면, I는의 setTimeout 달리 jQuery를 새로 추가 선택 상자를 선택하지 않습니다 필요합니다 발견했습니다 :

    window.setTimeout(function() { jQuery('.languagedisplay').change();}, 1);
    

  9. 9.

    $(":input#single").trigger('change');
    

    이건 내 스크립트했다. 나는 3 콤보를 & 바인드 chainSelect 이벤트와, 나는 모든 드롭 다운을 선택 URL로 3 개 값을 전달 및 기본 할 필요가있다. 나는 이것을 사용

    $('#machineMake').val('<?php echo $_GET['headMake']; ?>').trigger('change');
    

    그리고 첫 번째 이벤트는했다.

  10. from https://stackoverflow.com/questions/4672505/why-does-the-jquery-change-event-not-trigger-when-i-set-the-value-of-a-select-us by cc-by-sa and MIT license