2011-06-11 441 views
95

在我們的應用程序中,我們解析一個網頁並將其加載到iFrame中的另一個頁面中。該加載頁面中的所有元素都有它們的tokenid-s。我需要通過這些tokenid-s選擇元素。手段 - 我點擊主頁上的一個元素,並在iFrame的頁面中選擇相應的元素。與jQuery的幫助我做它以下列方式:在iFrame中選擇一個元素jQuery

function selectElement(token) { 
    $('[tokenid=' + token + ']').addClass('border'); 
} 

但是具有這種功能,我只能,不會在iframe中選擇當前頁面中的元素。任何人都可以告訴我如何選擇加載的iFrame中的元素?

謝謝。

回答

116
var iframe = $('iframe'); // or some other selector to get the iframe 
$('[tokenid=' + token + ']', iframe.contents()).addClass('border'); 

還要注意的是,如果這個iframe的src指向一個不同的領域,由於安全原因,您將無法訪問在JavaScript此iframe的內容。

+5

請記住$('iframe')不直接返回iframe。你需要把它從數組中拉出來。 – Kayla 2011-06-11 16:10:57

+0

感謝您的幫助。但這似乎並不奏效。 – cycero 2011-06-11 16:14:14

+2

@cycero,它應該工作。您是否動態生成此iframe?不要忘記,如果您將此iframe的src元素指向另一個域,而不是出於安全原因,則無法訪問其內容。 – 2011-06-11 16:17:15

39

這個帖子看看:http://praveenbattula.blogspot.com/2009/09/access-iframe-content-using-jquery.html

$("#iframeID").contents().find("[tokenid=" + token + "]").html(); 

將您選擇的查找方法。

但是,如果iframe不是來自您的服務器,這可能是不可能的。其他職位談論權限被拒絕的錯誤。

jQuery/JavaScript: accessing contents of an iframe

+0

在獲取元素的HTML方面起作用,但是如何將CSS類添加到所選元素? $(「#iframeDiv」)。contents()。find(「[tokenid =」+ token +「]」)。addClass(「border」);似乎沒有工作。 – cycero 2011-06-11 16:37:15

+1

你有沒有得到任何權限被拒絕的錯誤?你可以給我的iframe的HTML? – 2011-06-11 16:43:08

+0

不,沒有權限拒絕問題。 – cycero 2011-06-11 17:07:37

13

當你的文件已經準備好,這並不意味着你的iframe是準備過,
所以你要聽的iframe加載事件,然後訪問您的內容:

$(function() { 
    $("#my-iframe").bind("load",function(){ 
     $(this).contents().find("[tokenid=" + token + "]").html(); 
    }); 
}); 
-3

這裏是簡單的jQuery做到這一點,使div只能在容器中拖動:

$("#containerdiv div").draggable({containment: "#containerdiv ", scroll: false});