簡體   English   中英

jQuery-選擇名為ajax的文檔

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM