2009-04-07 29 views
236

Tôi có một iframe và để truy cập vào phần tử cha tôi thực hiện đoạn mã sau:cách truy cập trang mẹ của iFrame bằng jquery?

window.parent.document.getElementById('parentPrice').innerHTML 

Làm thế nào để có được những kết quả tương tự sử dụng jquery?
CẬP NHẬT: Hoặc cách truy cập trang mẹ của iFrame bằng jquery?

+0

Xem thêm http://stackoverflow.com/questions/12114243/retrieving-a-documents-parent-iframe-in-jquery/36445098#36445098 –

Trả lời

439

Để tìm trong các phụ huynh về việc sử dụng iFrame:

$('#parentPrice', window.parent.document).html(); 

Tham số thứ hai cho $() wrapper là bối cảnh trong đó để tìm kiếm. Điều này mặc định là tài liệu.

+3

Ok lớn tôi có thể giúp. –

+3

Câu trả lời hay, tiết kiệm thời gian của tôi, cảm ơn :) –

+16

Tuyệt vời - bạn đã thừa nhận lời cảm ơn trước khi cảm ơn bạn. StackOverflow có vấn đề với múi giờ có thể? – belugabob

36

làm thế nào để truy cập vào trang mẹ iFrame sử dụng jquery

window.parent.document.

jQuery là thư viện trên đầu trang của JavaScript, không phải là một thay thế hoàn chỉnh cho nó. Bạn không phải thay thế mọi biểu thức JavaScript cuối cùng bằng một cái gì đó liên quan đến $.

+6

+1. jQuery là rất tốt, nhưng rất nhiều câu trả lời cho các vấn đề đơn giản dường như là 'sử dụng jQuery'. Tuy nhiên, nếu bạn đang tải thư viện, nhưng đừng tải nó một tác vụ. Ngoài ra, mọi người dường như lo ngại về JS perf, sau đó sử dụng API trên đầu JS để làm những việc dễ dàng nhất có thể (và có thể nhanh hơn) mà không cần API. –

+1

@Grant Mặc dù tôi mơ ước jQuery trở thành mã nguồn gốc bên trong các trình duyệt. –

+3

@Blowski: đó là cơn ác mộng của tôi!jQuery chứa rất nhiều mã cực kỳ phức tạp và dễ vỡ “làm những gì tôi muốn nói” sẽ hoàn toàn không thích hợp để đưa vào một API chính thức. – bobince

5

trong cha mẹ cửa sổ đặt:

<script> 
function ifDoneChildFrame(val) 
{ 
    $('#parentPrice').html(val); 
} 
</script> 

và trong iframe src tập tin đặt:

<script>window.parent.ifDoneChildFrame('Your value here');</script> 
3

yeah nó làm việc cho tôi là tốt.

Lưu ý: chúng ta cần phải sử dụng window.parent.document

$("button", window.parent.document).click(function() 
    { 
     alert("Functionality defined by def"); 
    }); 
4

Nó làm việc cho tôi với chút twist. Trong trường hợp của tôi, tôi phải điền giá trị từ POPUP JS vào biểu mẫu Windows PHỤ HUYNH.

Vì vậy, tôi đã sử dụng $('#ee_id',window.opener.document).val(eeID);

Tuyệt vời !!!

2

Có thể hơi muộn để chơi ở đây, nhưng tôi vừa phát hiện ra plugin jQuery tuyệt vời này https://github.com/mkdynamic/jquery-popupwindow. Về cơ bản nó sử dụng một sự kiện gọi lại onUnload, do đó, về cơ bản nó lắng nghe cho việc đóng cửa sổ con, và sẽ thực hiện bất kỳ công cụ cần thiết nào vào thời điểm đó. SO thực sự không cần phải viết bất kỳ JS nào trong cửa sổ con để trả lại cho cha mẹ.

8

Nếu bạn cần phải tìm ra dụ jQuery trong tài liệu gốc (ví dụ, để gọi một chức năng tiện ích được cung cấp bởi một plug-in) sử dụng một trong những cú pháp:

  • window.parent.$
  • window.parent.jQuery

Ví dụ:

window.parent.$.modal.close(); 

jQuery được gắn vào đối tượng window và đó là những gì window.parent là.

+0

Tôi đang sử dụng iframe của mình như một điều khiển người dùng. Điều này cho phép tôi giữ cho nó đẹp và sạch sẽ. –

3

Bạn có thể truy cập vào các yếu tố của cửa sổ cha mẹ từ bên trong một khung nội tuyến bằng cách sử dụng window.parent như thế này:

// using jquery  
window.parent.$("#element_id"); 

Mà là giống như:

// pure javascript 
window.parent.document.getElementById("element_id"); 

Và nếu bạn có nhiều hơn một iframe lồng nhau và bạn muốn truy cập iframe trên cùng, sau đó bạn có thể sử dụng window.top như thế này:

// using jquery 
window.top.$("#element_id"); 

Giống như:

// pure javascript 
window.top.document.getElementById("element_id"); 
+0

Điều này làm việc cho tôi. Cảm ơn –

0

Có nhiều cách để thực hiện việc này.

I) Nhận phụ huynh chính trực tiếp.

cho exa. tôi muốn thay thế trang con của tôi để khung nội tuyến sau đó

var link = '<%=Page.ResolveUrl("~/Home/SubscribeReport")%>'; 
top.location.replace(link); 

đây top.location được cha mẹ trực tiếp.

II) được cha mẹ từng người một,

var element = $('.iframe:visible', window.parent.document); 

đây nếu bạn có nhiều thì một khung nội tuyến, sau đó xác định một hoạt động hoặc có thể nhìn thấy.

bạn cũng có thể làm như thế này để có được cha mẹ hơn nữa,

var masterParent = element.parent().parent().parent() 

III) được cha mẹ bằng cách nhận diện.

var myWindow = window.top.$("#Identifier") 
Các vấn đề liên quan