[英]jQuery - select document that called ajax
我有2個文件:parent.html和child.html
parent.html使用jquery ajax $ .get / $。post調用child.html
現在,在child.html中,我想訪問parent.html(不使用iframe)
像這樣的命令
$("#id", window.parent.document).doSomething();
不起作用。 如何做到這一點?
這取決於您何時嘗試訪問$(“#parent_id”)。
如果您直接在“ child.html”中的某些腳本標簽中調用$(“#parent_id”),則它將無法正常工作,因為您尚未加載html。
如果是在加載子項之后發生事件調用的結果,則它應該可以工作。
例如,這應該工作:
<html>
<head>
<script src="http://code.jquery.com/jquery-2.0.0.min.js"></script>
<script>
$(function() {
var child_html = "<button onclick=\"$('#update_me').html('hello!')\">click me!</button>";
$("#place_for_child").append(child_html);
});
</script>
</head>
<body>
<div id="update_me"></div>
<div id="place_for_child"></div>
</body>
</html>
可以從單獨的文件中加載變量child_html
。
這是jsfiddle版本 。
您可以使用window.opener,如果您使用子級作為父窗口
window.opener.$("#id").doSomething();
如果您要在parent.html中加載child.html,則可以簡單地使用
$("#id").doSomething();
因為,Child.html加載在parent.html中,所以它也是parent.html的一部分
如果您正在使用$.load
/ $.get
到的內容加載child.html
在現有的元素parent.html
然后$('#id')
就足夠了
如果您是從parent.html發出ajax請求,您將收到child.html的html標記。 這與打開子窗口然后可以與其父窗口進行交互非常不同。
在這種情況下,您在child.html上的javascript將不會運行,因為它永遠不會加載到瀏覽器窗口中。 如果要執行代碼,則必須使用Eval手動執行。
聽起來您需要重新考慮頁面的交互方式。 Ajax通常使用的情況是異步引入數據。 如果您想使用功能,請查看諸如require.js之類的庫
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.