обратный вызов jquery после оператора if - PullRequest
2 голосов
/ 25 апреля 2011

Привет, ребята, у меня проблемы с поиском помощи при создании обратного вызова в определенных ситуациях.

У меня есть фрагмент кода, который загружает страницу ссылок в iframe, а затем изменяет scr, если нажата другая ссылка.

$(".iframe").hide();
$(".lnk").click(function(){
$(".iframe").show('slow')
;})
;
$(".frmclose").click(function(){
$(".iframe").hide('slow')
;})
;

Вышеуказанное работает в (документ) .ready ниже это за пределами этого (по некоторым причинам это не работает внутри)

function changeIframeSrc(id, url) {
if (!document.getElementById) return;
var el = document.getElementById(id);
if (el && el.src) {el.src = url;return false;}return true;}

ссылка:

  <a href="http://www.google.com" onclick="return changeIframeSrc('ifrm', this.href)" class="lnk">google</a>

до этого у меня есть div, в котором находится iframe, становится невидимым. У меня также есть кнопка внутри этого div, которая скрывает div + iframe.

У меня проблемы с тем, что после того, как iframe был открыт, а затем закрыт через ссылку div, если он открывается заново, нажав другую ссылку, iframe показывает, чтобы отобразить старую страницу, а затем изменяется. Но я хочу, чтобы рамка загружала новую страницу (пока она скрыта), а затем показывала ее. Я думал об использовании обратного вызова после изменения iframe src, но я не вижу, где бы я это реализовал.

Пример того, что происходит (нажмите кнопку GDPH, чтобы увидеть ссылки для iframe)

Любые мысли или помощь приветствуются.

Привет

B Стоунер

Ответы [ 2 ]

1 голос
/ 25 апреля 2011

Я бы поймал событие .load() для iframe, оно сработает после загрузки документа в iframe.

$(".iframe").load(function { /* code to run when iframe is loaded */ });
1 голос
/ 25 апреля 2011

Я думаю, что все, что вам нужно сделать, это очистить src от <iframe>, когда он закрыт. Это очистит страницу, так что в следующий раз, когда вы покажете iFrame, он снова станет пустым.

Я сделал небольшую демонстрацию этой функции, которая использует 3 ссылки с вашей страницы в качестве примера. <iframe> начинает скрываться (с помощью CSS), и каждая ссылка покажет <iframe>, а затем загрузит удаленный сайт. Я добавил ссылку close iframe для имитации ссылки закрытия, которая имеется у вас под <iframe> на вашем сайте.

Надеюсь, это поможет!

Редактировать: Обновлена ​​демонстрационная ссылка, чтобы включить часть обратного вызова. Как-то пропустил, когда прочитал вопрос!

Edit 2: Ваша функция changeIframeSrc не работала, потому что она была определена внутри анонимной функции jQuery и является закрытием. Смотрите вызов функции Jquery из JavaScript

...