Базовая функция поиска jQuery примет область видимости в качестве второго параметра. По умолчанию используется текущий документ, но вы можете указать другой документ для поиска через границы iframe. Я сделал это для предыдущего проекта; это может быть не совсем то, что вы ищете, но, надеюсь, даст некоторые подсказки.
Внутри iframe вы можете получить доступ к документу верхнего окна следующим образом:
$('#iframe2', top.document)
Похоже, вы хотите определить, в каком фрейме произошло событие click, верно?
Я не уверен, как именно это сделать, так как у меня был только один
Для удовольствия, вот мой обработчик событий для изменения размера элемента iframe в родительском документе в зависимости от размера документа iframe:
$(document).bind('ResultsFrameSizeChanged:hybernaut', function(event){
var iframe = $('#results', top.document)[0];
if(iframe.contentDocument){ // IE
var height = iframe.contentDocument.body.offsetHeight + 35;
} else {
var height = iframe.contentWindow.document.body.scrollHeight;
}
// konsole.log("Setting iframe height to " + height);
$(iframe).css('height', height);
});
Затем вы запускаете это пользовательское событие для событий, которые могут изменить высоту документа (например, ajax-загрузка):
$(top.document).trigger('ResultsFrameSizeChanged:hybernaut');
Сначала я связывал это событие с $ ('iframe'). Ready (), но это было несовместимо во всех браузерах, и в итоге я вызвал его из нескольких мест в обработчиках завершения ajax.
Еще одно важное замечание: если вы загружаете jQuery в свои iframes, то у вас есть несколько отдельных экземпляров jQuery, и многие из ваших предположений о том, как работает jQuery, больше не верны (что сейчас является глобальным?). Это может быть очень сложным. Я не уверен, но я считаю, что если вы используете события в пространстве имен и инициируете их для определенного документа (например, top.document), то они будут обрабатываться в правильном контексте.