Проверка, чтобы увидеть, существует ли фрейм с jQuery - PullRequest
4 голосов
/ 25 августа 2009

Я обнаружил, что могу сделать следующее:

if($('#notice', parent.frames['header'].document).length>0) { alert("It is here!"); }

чтобы проверить предмет в другом кадре.
Есть ли способ выяснить, существует ли рамка? В частности, я ищу, чтобы увидеть, есть ли parent.frames ['header']. Document.

Есть ли надежный способ сделать это?

Обновление: Вот мой код набора фреймов:

<frameset rows="104,*,22" frameborder="NO" border="0" framespacing="0">
    <frame src="header.php" id="header" name="header" scrolling="no" title="Header and Menu" noresize>
    <frame src="main.php" title="Main content" name="main">
    <frame src="footer.php" name="footer" title="Footer" scrolling="NO" noresize>
</frameset>

Я пытаюсь убедиться, что могу получить доступ к div, который находится внутри "header". Недостатком является то, что в некоторых случаях main заменяется другим набором кадров.

Ответы [ 2 ]

3 голосов
/ 26 августа 2009

Если вы хотите узнать, существует ли элемент, вы должны проверить свойство 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
 }

Проверьте этот пример:

1 голос
/ 25 августа 2009

Проверьте селектор:

if ($("#myFrame").length) alert("It exists!");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...