2010-01-20 17 views
0

我有一個父頁面,其中包含一個textarea和一個鏈接來打開一個子窗口。子窗口有另一個textarea和一個按鈕。用戶在子窗口的textarea中輸入一些文本,然後單擊該按鈕,會觸發一個JavaScript,它會將父窗口中的textarea的內容更新爲子窗口的textarea的內容,並關閉子窗口。這段代碼的JQuery代碼是什麼?

我目前正在做這個在JavaScript中,它工作正常,但因爲我們將很快轉移到jQuery如何將使用jQuery完成相同。

page1.html 
---------- 

<script type="text/javascript"> 
    function newwin() { 
     window.open('page2.html','','width=600'); 
    } 
</script> 
<body> 
    <textarea id='t1'> 
    <a href="javascript:void(0)" onclick="newwin();">Click here</a> 

</body> 


page2.html 
---------- 
<script type="text/javascript"> 
    function updateparent() { 
     window.opener.document.getElementById('t1').value = document.getElementById('t2').value; 
     window.close(); 
    } 
</script> 
<body> 
    <textarea id='t2'> 
    <input type="submit" onclick="updateparent();"> 
</body> 
+2

jQuery只是JavaScript上的一個庫 - 如果你目前正在使用的工作,它仍然會工作,當你移動到jQuery。 – 2010-01-20 11:59:01

+0

@Domonic Roger:但這可能是一個理論問題,也是一種幫助開發人員理解jQuery的途徑 – 2010-01-20 12:03:05

+0

@Dominic Rodger--可能我並不擅長解釋事情。我所要求的是如何使用jQuery完成上述操作,或者更簡單地說,上面的代碼片段的jQuery等效代碼是什麼。我知道在轉移到jQuery之後,它仍然可以工作,並且jQuery只是Javascript之上的一個庫。 – 2010-01-20 12:04:38

回答

1

有趣的問題。

正如Domonic Roger所說,如果它的工作,那麼你可能想要離開它。

對我來說,問題不在於「這段代碼的JQuery代碼是什麼?」,而是如何使用jQuery來實現相同的解決方案。

有時它不僅僅是一個簡單的直接代碼替換案例。看看下面:

function updateparent() { 
    window.opener.document.getElementById('t1').value = document.getElementById('t2').value; 
    window.close(); 
} 

現在,jQuery代碼可能是這樣的:

function updateparent() { 
    window.opener.$("#t1").val($("#t2").val()); 
    window.close(); 
} 

但是,我不會這麼做。我會使用jQuery UI中提供的彈出窗口功能或某個插件(例如blockui)來獲得彈出窗口。

此外,此代碼:

<body> 
    <textarea id='t2'> 
    <input type="submit" onclick="updateparent();"> 
</body> 

在jQuery中,我們鼓勵使用後期綁定的事件,所以任何內聯JavaScript會去:

<body> 
    <textarea id='t2'> 
    <input id="MyInput" type="submit"> 
</body> 

一旦文檔準備好被綁定:

$(document).ready(function(){ 
    $("#MyInput").click(updateparent()); 
}); 
1

更多的 「jQuery的」 辦法做到這一點:

page1.html 
---------- 

<script type="text/javascript"> 
$(document).ready(function() { 

    $("#link1").click(function(){ 
     window.open('page2.html','','width=600');  
    }); 
}); 
</script> 
<body> 
    <textarea id='t1'> 
    <a id="link1" href="#">Click here</a> 

</body> 


page2.html 
---------- 
<script type="text/javascript"> 
$(document).ready(function() { 
    $("#link1").click(function(){ 
     window.opener.jQuery("#t1").val($("#t2").val());  
     window.close(); 
    }); 

}); 
</script> 
<body> 
    <textarea id='t2'> 
    <input type="submit" id="link2"> 
</body>