0

ページが読み込まれた後に自動的にクリックされるボタンがあります。setTimeout を使用しましたが、機能していないようです。なにが問題ですか?それは私がアイデアを得たstackoverflowの他の同様の投稿で機能しましたが、何らかの未知の理由で私のコードでは機能しません

    $(document).ready(function() {
                    jQuery(function($){
                        // The variable jcrop_api will hold a reference to the
                        // Jcrop API once Jcrop is instantiated.
                        var jcrop_api;

                        initJcrop();

                        // The function is pretty simple
                        function initJcrop()//{{{
                        {

                          // Invoke Jcrop in typical fashion
                          $('#target').Jcrop({
                            onRelease: releaseCheck,

                          },function(){

                            jcrop_api = this;
                            // Setup and dipslay the interface for "enabled"
                            $('#can_move').attr('checked','checked');

                          });

                        };
                        function releaseCheck()
                        {
                          jcrop_api.setOptions({ allowSelect: true });
                          $('#can_click').attr('checked',false);
                        };



                        $('#setSelect').click(function(e) {
                          // Sets a random selection
                          jcrop_api.setSelect([0,0,400,118]);
                        });

                      });
         setTimeout(function() {
            $('#setSelect').trigger('click');
        },10);
    });

<button id="setSelect">setSelect</button>
4

1 に答える 1

1

物事の非同期順序に問題がある可能性があります。

例えば。ハンドラーが設定される前に、またはハンドラーが設定された後、が設定さsetTimeoutれる前にポップされます。ある行が他の行の下にあるからといって、後で実行されるわけではないことに注意してください。初期化するコールバックがいつ呼び出されるかを制御できないためです。clickclickjcrop_apijcrop_api

行を追加するconsole.logと、この問題をデバッグし、コードが計画どおりに実行されるかどうかを確認するのに役立ちます。

順序を修正するには、jcrop_api を初期化した後にのみクリック ハンドラーを設定し、クリック ハンドラーが設定された後にのみタイムアウトを設定します (その場合、タイムアウトはまったく必要ないかもしれません)。

于 2013-02-05T14:48:11.860 に答える