10

jQuery 1.9.1では、引数はトリガーからクリックハンドラーに渡されません。これは、jquery1.7.2では引数が適切に渡されるためです。

デモンストレーションの例:

<!doctype html>
<head>
        <script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
        <!--script src="http://code.jquery.com/jquery-1.7.2.min.js"></script-->
</head>
<body>
    <input id="test" type="checkbox">
    <button id='trigger'>trigger</button>

</body>
    <script>
        $('#test').bind('click',
            function (e, data){
                if (typeof data == 'undefined') {
                    alert('no data passed');
                    return;
                }
                alert('first passed=' + data.passed1 + ' second passed='+data.passed2);
            });

        $('#trigger').click(
            function (e){
                $('#test').trigger('click',{passed1:'first',passed2:'second'});

        });
    </script>
</html>

jquery-1.7.2.jsを使用しても、正常に機能します。

私は何が欠けていますか?私を助けてください。

4

1 に答える 1

7

これは既知の問題です: http://bugs.jquery.com/ticket/13353

回避策は、代わりに .triggerHandler() を使用することです。

$('#trigger').click(function (e) {
    var $test = $('#test');       
    $test
        .prop('checked', !$test.prop('checked'))
        .triggerHandler('click',{passed1:'first',passed2:'second'});        
});

JSFiddle: http://jsfiddle.net/antishok/xHVDx/2

いずれにせよ、クリックをトリガーすることは悪です(コールバックを実行するだけの場合)

于 2013-03-22T00:43:08.133 に答える