Если вы хотите узнать, существует ли элемент, вы должны проверить свойство length, см. jQuery FAQ :
if ($('#myFrame').length) {
alert('#myFrame exists');
}
В вашем случае я думаю, что вы хотите:
if ($('frame[name=header]', parent).length) {
alert('frame exists');
}
Зачем проверять свойство длины?
Поскольку, если вы передаете селектору jQuery, который ничего не соответствует, возвращаемый результат является объектом jQuery, а не ложным значением (null, undefined, 0 или false) в if выражении условие оценивается как bool, а не ложное значение всегда оценивается как true:
if ($('#nonExisting')) {
alert('always true');
}
// because
!!$('#nonExisting') == true; // and
!!'hello' == true;
!!0 == false;
Я использовал !!
в качестве примера простого способа превращения любого выражения в его логический эквивалент, что оператор if делает за кадром ...
Редактировать: Глядя на разметку вашего фрейма и предполагая, что вы хотите проверить, существует ли фрейм заголовка на главной странице, вы можете легко сделать это:
if (parent.header !== undefined) {
// frame exists
}
Или просто:
if (parent.header) {
// frame exists
}
Проверьте этот пример: