может быть, вы могли бы попробовать пройти все кадры. Вам нужно будет либо использовать поиск в ширину или глубину в зависимости от глубины вложения кадра. передать его изначально.
frameSearch(yourElementId,$("frame"));
function frameSearch(elementId,frames){
if (!(frames)) {return "element not found";}
$.each(frames,function(){
var $elementFound = this.find("#"+elementId);
if ($elementFound){
return $elementFound;
}
var newFrames = this.find("frame");
if (newFrames) {frameSearch(elementId,newFrames);}
});
}
Я не уверен на 100% в правильности этого рекурсивного алгоритма, но я верю, что это правильная идея.
EDIT:
если вам нужно найти самого верхнего родителя, попробуйте:
var $currentDocument = $("document");
while ($currentDocument.parent()){
if ($currentDocument.find("#"+yourElementId)){
$yourElement = $currentDocument.find("#"+yourElementId);
break;
}
$currentDocument = $currentDocument.parent();
}
if (!($yourELement)){
$yourElement = frameSearch(yourElementId,$("frame"));
}
это будет проверять сначала вверх, затем вниз, если это не сработает