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之前弹出click,或者可能在设置click处理程序之后但在设置之前弹出jcrop_api。请注意,仅仅因为一行低于另一行并不意味着它稍后会执行 - 因为您无法控制何时调用初始化的回调jcrop_api

添加console.log行可能有助于调试此问题并查看代码是否按您计划的顺序执行。

要修复事情的顺序,您可以仅在初始化 jcrop_api 后设置点击处理程序,并仅在设置点击处理程序后设置超时(也许您根本不需要超时)。

于 2013-02-05T14:48:11.860 回答