代码之家  ›  专栏  ›  技术社区  ›  Sotiris Adrian J. Moreno

加载函数onclick

  •  1
  • Sotiris Adrian J. Moreno  · 技术社区  · 15 年前

    <a onclick="$('#result').load('codes/test.html');$('#result').show();" >XHTML code</a>
    

    它完美地加载了测试.html并使其可见。在这之前一切都很好。当我尝试添加函数时 prettyPrint() 对文本进行一些修改,并将代码更改为:

    <a onclick="$('#result').load('codes/test.html');$('#result').show();prettyPrint();" >XHTML code</a>
    

    我无法使prettyPrint()工作,相反,如果我添加 onmouseout="prettyPrint(); 当我取下光标时它就工作了。我没有使用javascript和jquery的经验,所以我不知道真正的问题是什么,所以我非常感谢任何关于如何使prettyPrint工作的帮助 onclick

    5 回复  |  直到 13 年前
        1
  •  3
  •   Piotr Rochala    15 年前

    如果您使用的是jQuery,为什么还要费心使用内联Javascript呢?为什么不:

    <script type="text/javascript">
    $(function(){
        $('#myLink').click(function(){
            $('#result').load('codes/test.html', function() {
                $('#result').show();
                prettyPrint();
            });
    
            return false;
        });
    }):
    </script>
    
    <a id="myLink" href="#">XHTML code</a>
    

    固定的代码,所以它调用 prettyPrint()

        2
  •  2
  •   Lou Franco    15 年前

    负载是异步的。调用prettyPrint时,文本可能还没有出现。

    <a onclick="$('#result').load('codes/test.html', function(){prettyPrint();$('#result').show();});" >XHTML code</a>
    

    load()接受第二个参数,该参数是加载完成时要调用的函数。我把印刷稿和节目搬到那里去了。

        3
  •  0
  •   PIM    15 年前

    您可以执行以下操作:

    $('#result').show("fast",function(){ prettyPrint();});
    
        4
  •  0
  •   graycrow    15 年前

    您应该使用回调函数:

    <a onclick="$('#result').load('codes/test.html', function() {prettyPrint();}).show();" >XHTML code</a>
    
        5
  •  0
  •   Fyodor Soikin    15 年前

    .load() 开始 装载并立即返回。因此,你的 prettyPrint 函数在数据尚未加载时被调用。

    若要解决此问题,请将回调函数传递给 .load

    $("#result").load( '...',
        function() { 
            $("#result").show();
            prettyPrint();
        }
    }