2010-12-08 3 views
5

родительская ссылка:Как закрыть fancybox из дочернего окна?

<a href="feedback.php" id="feed">Provide your feedback here</a> 

JQuery код для инициирования FancyBox является ...

$("#feed").fancybox(); 

кода feedback.php ...

 <html> 
     <head> 
<script language="javascript">  
$(document).ready(function(){ 
    $("#feed_submit").click(function(){ 
    //Name is alerted 
    alert($("#name").val()); 

    //code to close fancy box(Not working) 
    $.fancybox.close(); 

    }); 
    }); 
</script> 
     </head> 
     <body> 
     <form method="post" name="feedback" id="feedback" action=""> 
       <div> 
        <label>name</label> 
        <input type="text" name="name" id="name"/> 
       </div> 
       <div> 
        <label>feedback</label> 
        <input type="text" name="content" id="content"/> 
       </div> 
     <div><input type="button" name="feed_submit" id="submit" value="submit"></div> 
    </form>  
    </body> 
    </html> 

После нажатия кнопки передачи I необходимо закрыть причудливое поле на этой странице с помощью jQuery

я попытался с помощью

$.fancybox.close(); 
parent.$.fancybox.close(); 

Но это не работает для меня. Если есть какая-либо возможность закрыть внутри этой формы ajax, пожалуйста, дайте мне знать.

+0

Можете вы показать нам остальную часть вашего кода? – karim79 2010-12-08 17:49:37

+0

@ karim79 Я думаю, что это все соответствующий код. – 2010-12-08 19:19:40

+0

работает для меня $ .fancybox.close(); thnx, я искал: D – holms 2011-09-06 13:34:23

ответ

10

Следующий код должен работать, и работал для многих

parent.$.fn.fancybox.close(); 

Однако, я также видел, например in this question, JQuery, работающей в режиме noConflict, без ведома пользователя. Если это дело для вас, вы должны изменить свой сценарий для

parent.jQuery.fn.fancybox.close(); 

Если ни одна из этих работ, пожалуйста, используйте инструмент как Firebug для Firefox, или в консоль разработчика Chrome, чтобы увидеть, если есть является сообщением об ошибке и сообщает нам, что это такое.

7

Попробуйте

window.parent.$.fancybox.close(); 

предполагая, что$.fancybox.close(); работы в родительском окне.

+0

fancybox открывает элемент DIV, а не фактическое всплывающее окно, поэтому не будет `window.opener`. – 2010-12-13 07:31:02

+1

@David Как вы можете опубликовать этот комментарий, когда вы сами использовали `window.parent` в своем ответе? Вы сделали что-то подобное и все еще думаете, что fancybox открывает div, а не другое окно (iframe) в этом случае? – 2010-12-13 07:45:39

+1

Он открывает div с iframe. В iframe нет `window.opener`. – 2010-12-13 07:50:51

0
$.fn.fancybox.close(); 

это работает?

-1

parent.jQuery.fancybox.close(); с. $. - Сдвиги в IE8. С этим - все нормально.

1

Когда вы используете FancyBox с типом:.. IFRAME в поле IFrame вы должны вставить все ваши библиотеки, как JQuery и т.д. Затем, чтобы закрыть окно IFrame фантазии просто использовать родительский $ fancybox.close()

Помните, что fancybox с типом «iframe» открывается в новом окне, fancybox с другими типами открывается в том же окне.

1

Столкнувшись с той же проблемой, что это единственное решение, я мог находками, что сделал трюк:

сам код является:

parent.jQuery.fancybox.close(); 

он работает в как таковая:

jQuery("#cancelId").click(function(){ 
    parent.jQuery.fancybox.close(); 
}); 

надеется, что это поможет, Naore

0

// на дочернем окне или фрейме поставить эту функцию:

function closeIframe(){ parent.closeIframeMain(); }

// и эту ссылку, чтобы закрыть это окно

<a onclick="closeIframe();" href="#">Close window</a>

// затем в родительском окне поместите эту функцию:

function closeIframeMain(){ jQuery("#fancybox-close").trigger("click"); }

0

Он будет работать наверняка, просто скопировать и вставить его:

<a href="javascript:;" onclick="jQuery('.fancybox-close').fancybox().trigger('click');">Close from Inside</a>

На самом деле это вызывает кнопка закрытия, если сам FancyBox, который работает в большинстве случаев.

Веселитесь с программированием :)

0

У меня была такая же проблема, но с ASP.NET.

В основном, на странице, я открываю страницу (с помощью элемента управления формы внутри), как это:

$.fancybox({ 
       href: '/ContactUs.aspx', 
       type: 'iframe', 
       padding: 60, 
       width: 465, 
       height: 670, 
       maxWidth: 465, 
       maxHeight: 670, 
      }); 

Когда я щелкаю близко от FancyBox, она работает, но если я представить его первым Затем закройте его, fancyBox не закроется, даже если страница находится в том же домене.

В конце концов, я узнал, что вы должны установить Autosize ложь при открытии FancyBox:

$.fancybox({ 
       href: '/ContactUs.aspx', 
       type: 'iframe', 
       padding: 60, 
       width: 465, 
       height: 670, 
       maxWidth: 465, 
       maxHeight: 670, 
       autoSize: false 
      }); 

Он должен теперь работать. Ответьте, если это работает для кого-то еще. Приветствия.

Will

Смежные вопросы