2010-08-25 66 views
1

我有以下的代碼加載功能的onclick

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

它完全加載的test.html的結果DIV的內容,也使其可見。直到這一點都很好。當我嘗試添加功能prettyPrint()適用上的文字一些修改和代碼更改爲以下:

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

我不能讓prettyPrint()的工作,而不是如果我添加onmouseout="prettyPrint();它工作時我摘下我的光標。我沒有使用javascript和jquery的經驗,所以我不知道真正的問題是什麼,所以我會很感激如何使prettyPrint工作onclick

回答

3

如果您正在使用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()當負載回調被調用。

+1

-1:這不能解決問題 – 2010-08-25 15:19:09

+0

爲什麼它不能解決問題? – rochal 2010-08-25 15:22:03

+0

是的,-1也是,即使我像你這樣想:「哦,我的上帝停止在線JS!」 – 2010-08-25 15:22:14

0

你可以做到以下幾點:

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

負載是異步的。當prettyPrint被調用時,文本可能還沒有在那裏。

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

load()接受第二個參數,它是一個函數,在加載完成時調用。我把prettyPrint和節目移到了那裏。

+0

謝謝,這解決了我的問題! :) – Sotiris 2010-08-25 15:25:45

0

您應該使用一個回調函數:

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

你的問題是,你誤會怎麼​​作品。在數據加載之前它不會阻塞。相反,它只有開始加載並立即返回。因此,當數據尚未加載時,您的prettyPrint函數被調用。

要解決此問題,請將回調函數傳遞給.load。回調將在加載完成時調用:

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

或者你可以讓'load()'同步工作......只是開玩笑^^ – 2010-08-25 15:23:58