Спасибо, настроил и как обычно есть одно маленькое НО.
У меня сразу после загрузки DOM окна, запускается функция которая работает с этим классом "show". И получается что она срабатывает перед назначением класса. Я пробовал вместо afterLoad поставить beforeLoad, но тогда конечно приведенный вами пример не будет работать. В общем получается что клик по ссылке находится в index.html а функция обрабатывающая класс show в test.html |
Все то же что описано выше плюс можно немного уточнить какой именно фрейм брать если он на страницы не один.
$('iframe[src$=' + el.href + ']') |
dd_smol, фрейм то один test.html
|
Цитата:
Можно пример функции, которая раньше времени отрабатывает. |
dd_smol, вот примерно так:
function init() {...} google.maps.event.addDomListener(window, 'load', init); |
События load не подходит для запуска функции так как класс еще не добавлен к параграфу.
Может попробовать запустить функцию после добавления класса? jQuery(function($) { $('a[rel]').each(function(i, el) { $(this).fancybox( { href : el.href, type: "iframe", afterLoad: function() { var winFrame = $('iframe[src$="' + el.href + '"]')[0].contentWindow; $( winFrame.document ).find('.' + $(el).attr('rel')).addClass('show'); // Запустить функцию после добавления класса winFrame.init(); } }); }); }); http://learn.javascript.ru/play/sOxOx |
dd_smol, событие load взято из примера google maps api.
В том то и дело что во фрейме код google map, который в зависимости от того какому элементу назначен класс curr, устанавливает на карте метки из одного или другого массивов. На главной странице (index.html) две ссылки "карта компании" и "диллеры", при клике на которые всплывает окно (map.html). В файле map.html находятся две ссылки аналогичные тем что в файле index.html и код добавляющий карту. В данном коде есть проверка какая из двух ссылок имеет класс curr. Таким образом в index.html <a rel="a" class="fancybox.iframe" href="map.html">a</a> <a rel="b" class="fancybox.iframe" href="map.html">b</a> и js $('a[rel]').each(function(i, elem) { $(this).fancybox({ afterLoad: function() {$($('iframe')[0].contentWindow.document).find('.' + $(elem).attr('rel')).addClass('curr')} }) }); В map.html <a class="a" href="#">a</a> <a class="b" href="#">b</a> и js function init() { // google maps code coords(); } function coords() {if($('.a').hasClass('curr')) {coords1()} else {coords2()}} google.maps.event.addDomListener(window, 'load', init); |
spo,
google.maps.event.addDomListener(window, 'load', window.setTimeout(init, 1000)); |
рони, такое решение не хотелось использовать
|
А если обернуть вызов метода в промежуточную функцию и вызвать ее по тому принципу что я предложил выше?
function testFunc() { google.maps.event.addDomListener(window, 'load', init); } jQuery(function($) { $('a[rel]').each(function(i, el) { $(this).fancybox( { href : el.href, type: "iframe", afterLoad: function() { var winFrame = $('iframe[src$="' + el.href + '"]')[0].contentWindow; $( winFrame.document ).find('.' + $(el).attr('rel')).addClass('show'); // Запустить функцию после добавления класса winFrame.testFunc(); } }); }); }); |
Часовой пояс GMT +3, время: 16:18. |